【问题标题】:Custom loss function fails with standard loss inside自定义损失函数失败,内部有标准损失
【发布时间】:2020-12-05 18:40:18
【问题描述】:

我在 Keras 中遇到了自定义损失函数的问题。这些任务看起来相当简单,但由于意外行为而无法进行。这个想法是加入tf.keras.losses.SparseCategoricalCrossentropy 和一些额外的东西。首先我想确认,如果我只是在自定义损失函数中使用稀疏分类交叉熵,它不会改变网络训练。

默认解决方案是设置

model.compile(loss="sparse_categorical_crossentropy",...)

这没问题。网络学习并显示在训练和验证准确性方面的改进。

但是,当我定义自定义损失时

def new_loss(y_true,y_pred):
    ls = tf.keras.losses.SparseCategoricalCrossentropy()
    return ls(y_true,y_pred)

网络无法训练。

训练和验证准确度下降到 0.09...没有希望进行适当的训练。

此外,如果我执行以下操作

model.compile(loss= tf.keras.losses.SparseCategoricalCrossentropy(),...)

网络训练良好。

Tensorflow 版本是

tf.__version__ = '1.15.3'

Keras 版本是

keras.__version__ = '2.2.4-tf'

【问题讨论】:

    标签: python tensorflow keras loss-function


    【解决方案1】:

    我用你的损失函数替换了“sparse_categorical_crossentropy”,它在我的例子中运行良好,你设法让它工作了吗?

    model.compile(loss=new_loss,...)
    

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2020-12-19
      • 2017-04-04
      • 2017-12-18
      • 2020-03-27
      • 2020-11-16
      • 2019-05-27
      • 2020-02-02
      相关资源
      最近更新 更多