У меня есть эта пользовательская функция потерь в модели тензорного потока:
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 плох в любой момент.