繁体   English   中英

Keras / Tensorflow自定义损失函数

[英]Keras/Tensorflow custom loss function

我有一个用Keras构建的神经网络,正在尝试训练。 输出层有4个节点。 对于我要解决的问题,我只想基于真实值在单个输出节点上计算梯度。 基本上,y_true看起来像这样[0,0,2,0],其中零表示应该忽略的节点。 但是y_pred的格式为[1.2,3.2,4.5,6]。 我想使它只在mse中考虑第三个索引。 这将要求我将y_pred中的索引0、1和3归零。 我还没有找到合适的方法来做到这一点。

下面是我尝试过的代码,但是它从损失函数返回NaN。

def custom_mse(y_true, y_pred):

    return K.mean(K.square(tf.truediv(y_pred*y_true,y_true)-y_pred), axis=-1)

有没有办法在这些Tensor对象上执行此简单操作?

这样做是这样的:

[1.2,3.2,4.5,6]*[0,0,2,0] = [0,0,9,0]
[0,0,9,0]/2 = [0,0,4.5,0]

然后正常继续。

这是执行此操作的代码:

def custom_mse(y_true, y_pred):
     return K.mean(K.square(tf.divide(tf.multiply(y_pred, y_true),tf.reduce_max(y_true))-y_true), axis=-1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM