我正在尝试在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文档中收集如何将形状值拟合到表达式中。感谢任何帮助,谢谢!