Я пытаюсь создать пользовательскую функцию потерь в Keras для однослойной задачи регрессии LSTM, которая вычисляет среднеквадратическую ошибку между только ненулевыми значениями в векторе метка / истинность и соответствующими значениями в предсказанном векторе.Я попытался сделать следующее
import theano.tensor as T
import keras.backend as K
def custom_loss_func(y_true, y_pred):
#make the prediction vector zero where the label vector is zero
y_pred = T.where(T.eq(y_true,0), 0, y_pred)
#get nonzero values
nonzero_vals = T.flatnonzero(y_pred)
#return mean squared error on only the nonzero values
return K.sum(K.square(y_pred-y_true)) / K.shape(nonzero_vals)[0]
, что приводит к ошибке
"theano.gof.fg.MissingInputError: ввод 0 графика (индексы начинаются с 0), используетсядля вычисления Elemwise {neq, no_inplace} (/ masking_1_input, InplaceDimShuffle {x, x, x} .0), не было предоставлено и ему не было дано значение. Используйте флаг Theano exception_verbosity = 'high', для получения дополнительной информации об этой ошибке."
Это не похоже на работу, и я думаю, что это связано с фактором" формы "ненулевого вектора.Я не могу понять из документации Theano, как вписать значение формы в выражение.Любая помощь приветствуется, спасибо!