Доступ к прогнозам в виде массивов в пользовательской функции потерь - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть эта пользовательская функция потерь в модели тензорного потока:

def loss(y_real, y_pred):
    k = 0.0
    # some stuff here
    return k

y_pred - матрица. Для моей конкретной проблемы c мне действительно нужно получить доступ к y_pred как массив , а не tf.Tensor , тензор на самом деле вообще бесполезен для моей проблемы, и я не могу использовать keras.backend функции, но я не знаю, как это сделать, я даже не знаю, поддерживает ли тензор поток.

Когда я пробовал np.array(y_pred) Я получил эту ошибку:

Cannot convert a symbolic Tensor (sequential_194/Identity:0) to a numpy array.

Я также пытался использовать py_function , но, к сожалению, это не сработало, поскольку функция process просто вернула другую тензор вместо значения, которое я хочу.

def process(y_pred):
    y_pred = np.array(y_pred)
    # code here
    return 0.0

def loss(y_real, y_pred):
    return tf.py_function(func=process, inp=[y_pred], Tout=np.float32)

Я знаю, что доступ к прогнозам в виде массива в функции потерь является медленным. Но нет другого способа обучить мою модель, я могу использовать только y_pred для всех расчетов потерь. Это можно сделать в тензорном потоке, или мне придется использовать другой метод или библиотеку?

Извините, если мой engli sh плох в любой момент.

...