繁体   English   中英

keras 日志中缺少 val_loss 但在时代结束时正确打印

[英]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.ModelCheckpointtensorflow.keras.callbacks.ModelCheckpoint之间的一些混淆引起的。

在第一个(纯 keras )中,参数period控制模型每保存多少个epoch 这总是在纪元结束时发生,同时val_loss也被计算并包含在logs

tensorflow.keras.callbacks.ModelCheckpointsave_freq控制模型每保存多少批次 这会导致在epoch 中间评估callback ,其中val_loss不可用。

save_freq更改为epoch (默认值)已解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM