Chr*_*mon 2 python keras tensorflow tf.keras
使用 tf.keras.callbacks,我只能通过选择一个要监控的属性(通常是验证准确性)来自动保存最佳模型,但有时,我需要根据验证和训练准确性的比较来保存它。我怎样才能做到这一点?
tf.keras.history 文件是否记录模型在每个时期的权重?如果是这样,如何通过指定我想要的纪元从历史文件中保存我的模型?这是另一种可能的解决方案。
这就是我遇到的情况:有时,我的验证准确性在早期时期非常高(我想这纯粹是偶然),而我的训练准确性仍然远远低于它。该纪元最终成为自动保存的模型。这是一个蹩脚的模型,因为它的训练精度很差,但由于它的验证精度很高,所以它被拯救了。如果它保存在训练和验证准确性满足的地方,那将是一个非常好的模型。因此,在每个时期,我更愿意比较训练准确性和验证准确性,选择两者中最低的一个,并据此决定我的最佳模型。关于如何做到这一点有什么建议吗?
您可以像这样实现自定义回调:
class CustomModelCheckpoint(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs=None):
# logs is a dictionary
print(f"epoch: {epoch}, train_acc: {logs['acc']}, valid_acc: {logs['val_acc']}")
if logs['val_acc'] > logs['acc']: # your custom condition
self.model.save('model.h5', overwrite=True)
cbk = CustomModelCheckpoint()
model.fit(....callbacks=[cbk]...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2559 次 |
| 最近记录: |