如何在 Keras 中手动计算损失?
tensorflow 458
原文标题 :How to compute loss manually in Keras?
我正在使用损失函数:
meanAbsoluteError = tf.keras.losses.MeanAbsoluteError()
还有一个模型:
model.compile(optimizer=tf.keras.optimizers.Adam(0.001), loss=meanAbsoluteError)
现在我训练它并获取历史:
history = model.fit(train_features, train_labels, epochs=100, validation_data=(test_features, test_labels))
我可以检查最后损失有多低:
print(history.history["val_loss"][-1])
现在我尝试手动计算测试数据的损失,使用与训练时传入的数据相同的数据validation_data
:
print(meanAbsoluteError(model(test_features), test_labels).numpy())
但这给了我一个完全不同的数字!在我看来,这应该等于我从前面的表达式中得到的损失。但事实并非如此。
为什么这两个数字不相等,哪一个是正确的损失?
我在这里检查了如何调用损失函数:https://www.tensorflow.org/api_docs/python/tf/keras/losses/Loss#call
我将其编辑为使用history.history["val_loss"]
而不是建议的history.history["loss"]
,但它没有解决它。