如何在Keras中定义一个特殊的损失函数

时间:2017-09-08 09:39:06

标签: python python-2.7

我已经看过如何从Own Loss Function in KERAS定义加权损失函数。 但我想知道如何在有交互部分时定义损失函数,如下所示:

absolute value of (y_pred[i] - y_pred[j] - y_true[i] + y_true[j])*W[i,j]

其中y_pred[i]表示i-th预测字词,y_true[i]表示i-th字词的真值,W[i,j]表示i的权重}和j

我想让自己的损失函数只是所有ij的上述总和。并进行随机梯度下降以找到解决方案。

例如,如果没有重量条款,我可以轻松地用batch_size = 2编写我自己的代码,如下所示:

def Loss(y_true, y_pred):
p = K.maximum(0., y_true[0]-y_true[1] -y_pred[0]+ y_pred[1])
return p

但是这里有一些权重,如果我仍然定义与上述类似的损失函数:

def Loss(y_true, y_pred):
p = K.maximum(0., (y_true[0]-y_true[1] -y_pred[0]+ y_pred[1])*W[0][1])
return p

不可能是真的。你知道我们选择batch_size = 2.当我们进行梯度下降时,随机选择y_true [0]和y_true [1]。但W [0] [1]不是随机选择的y_true [0]和y_true [1]的权重。

如果没有交叉部分,Own Loss Function in KERAS将非常容易。

我仍然不知道如何解决我的问题。我期待着你的回答。 非常感谢你!

0 个答案:

没有答案