【问题标题】:Assign values to the tensors in keras while defining a new loss function在定义新的损失函数时为 keras 中的张量赋值
【发布时间】:2018-05-05 09:01:04
【问题描述】:

我正在尝试在 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

【问题讨论】:

    标签: keras tensor loss


    【解决方案1】:

    损失函数是张量,是计算图的一部分。因此,它必须使用 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==0 的重量将为1.05

    【讨论】:

    • 非常感谢!它工作得很好,但我需要对其进行一些修改以获得更好的回归结果。
    猜你喜欢
    • 2020-01-08
    • 2019-07-28
    • 2021-01-03
    • 1970-01-01
    • 2021-02-08
    • 2020-05-30
    • 2017-09-02
    • 2017-08-20
    • 2020-08-17
    相关资源
    最近更新 更多