Keras与Theano后端:自定义丢失功能

时间:2018-06-04 03:08:43

标签: python machine-learning keras theano mathematical-optimization

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

0 个答案:

没有答案