我已经看过如何从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
。
我想让自己的损失函数只是所有i
和j
的上述总和。并进行随机梯度下降以找到解决方案。
例如,如果没有重量条款,我可以轻松地用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将非常容易。
我仍然不知道如何解决我的问题。我期待着你的回答。 非常感谢你!