【发布时间】: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