[英]val_loss missing in keras logs but correctly printed at the end of epochs
我正在尝试在 keras 中使用ModelCheckpoint
回调。 但是,它一直对我说val_loss
不可用。 我在ModelCheckpoint
的代码中添加了print语句来检查logs
输入的内容。 您确实可以看到val_loss
中不存在val_loss
。
奇怪的是val_loss
在每个 epoch 结束时被正确报告,并且它存在于由model.fit
生成的history
对象中。 显然我提供了验证数据(否则无法在每个时期结束时评估val_loss
)。
...
3/3 - 65s - loss: 0.2053 - **val_loss: 0.1153**
Epoch 2/45
logs={'batch': 0, 'size': 30000, 'loss': 0.20355584}
WARNING:tensorflow:Can save best model only with val_loss available, skipping.
...
这是一个错误还是我错过了什么?
我正在使用 Keras 版本“2.2.4-tf”(从tf.keras
)
为了StackOverflow Community
的利益,在此处添加解决方案,即使它存在于Github
。
该问题是由keras.callbacks.ModelCheckpoint
和tensorflow.keras.callbacks.ModelCheckpoint
之间的一些混淆引起的。
在第一个(纯 keras )中,参数period
控制模型每保存多少个epoch 。 这总是在纪元结束时发生,同时val_loss
也被计算并包含在logs
。
在tensorflow.keras.callbacks.ModelCheckpoint
, save_freq
控制模型每保存多少批次。 这会导致在epoch 中间评估callback
,其中val_loss
不可用。
将save_freq
更改为epoch
(默认值)已解决该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.