我正在尝试在keras框架中实现自定义目标函数。 分别是一个加权平均函数,它取两个参数张量y_true和y_pred;权重信息来自y_true tensor。
张量流中是否有加权平均函数? 或者关于如何实现这种损失函数的任何其他建议?
我的功能看起来像这样:
功能(y_true,y_pred) A =(y_true-y_pred)** 2 w - 可从y_true导出,与y_true形状相同的张量 返回平均值(A,权重= w)< - 标量
y_true和y_pred是3D张量。
答案 0 :(得分:1)
您可以使用here keras
上的一个现有目标(也称为损失)。
您也可以实现自己的自定义函数丢失:
from keras import backend as K
def my_loss(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)
# Let's train the model using RMSprop
model.compile(loss=my_loss, optimizer='SGD', metrics=['accuracy'])
注意K
模块,它应该用来充分利用keras性能的keras后端,不要做这样的事情,除非你不关心性能问题:
def my_bad_and_slow_loss(y_true, y_pred):
return sum((y_pred - y_true) ** 2, axis=-1)
根据您的具体情况,如果您需要帮助,请写下您想要的目标函数。
你可以尝试这个来提供权重 - W
作为损失函数:
def my_loss(y_true, y_pred):
W = np.arange(9) / 9. # some example W
return K.mean(K.pow(y_true - y_pred, 2) * W)