TensorFlow2.8训练打印loss值与history字典存储值不一致
TensorFlow 2.8.0训练指标打印值与history存储值不匹配问题
系统信息
- 使用TensorFlow 2.8.0版本
当前行为描述
调用history = model.fit(...)完成训练后,history.history['loss']、history.history['accuracy']中存储的数值,与训练过程中每个epoch屏幕实时打印的对应数值存在差异。
编写自定义训练循环时,train_step()函数返回d_loss、g_loss两个损失值,调用model.fit()时两类输出数值不匹配:
训练过程屏幕实时打印日志如下:
Epoch 1/2 110/110 [==============================] - 33s 294ms/step - d_loss: -1.5941 - g_loss: 2.2890 Epoch 2/2 110/110 [==============================] - 32s 288ms/step - d_loss: -2.5873 - g_loss: 2.8013
读取history对象存储值的执行代码:
print([round(x, 4) for x in history_init.history['d_loss']]) print([round(x, 4) for x in history_init.history['g_loss']])
代码执行输出结果:
d_loss: [-2.7844, -2.2764]
g_loss: [2.4266, 3.3268]
预期行为
history字典存储的指标值应当与屏幕实时打印值完全一致,该表现与TensorFlow更早版本、其他参数配置场景下的正常表现相符。
补充说明
该问题此前已有相关讨论并提交过bug修复记录,但自TensorFlow 2.4.1版本后似乎再次复现。
内容的提问来源于stack exchange,提问作者Arya
相关产品推荐
相关产品推荐

