首页 > 解决方案 > 在定义新的损失函数时为 keras 中的张量赋值

问题描述

我正在尝试在 Keras 中定义损失函数

def rmseApprox(y_true, y_pred):
    dum = y_pred
    dum[y_pred>=0]=1.1
    dum[y_pred<0]=1

    return k.abs(K.mean(y_true - dum*y_pred), axis=-1)

将正值增加 1.1 倍,并将其与真实值进行比较。我收到以下错误:

TypeError: 'Tensor' object does not support item assignment

标签: kerastensorloss

解决方案


损失函数是张量,是计算图的一部分。因此,它必须使用keras backend定义,并且其行为不像“常规”numpy 数组。

这个例子应该适合你:

def rmseApprox(y_true, y_pred):
    y_pred_corrected = y_pred*(1.05 + K.sign(y_pred)*0.05)
    return K.abs(K.mean(y_true - y_pred_corrected, axis=-1))

请注意,在上面的代码中,箱子的重量y_pred==01.05.


推荐阅读