为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在 tf.keras 中的指定时期保存模型?

有没有办法在 tf.keras 中的指定时期保存模型?

慕慕森 2021-12-17 16:08:11
使用 tf.keras.callbacks,我只能通过选择一个要监控的属性(通常是验证准确性)来自动保存最佳模型,但有时,我需要根据验证和训练准确性的比较来保存它。我怎样才能做到这一点?tf.keras.history 文件是否在每个时期记录模型的权重?如果是这样,我如何通过指定我想要的时代来从历史文件中保存我的模型?这是另一种可能的解决方案。这就是我遇到的情况:有时,我的验证准确率在早期阶段非常高(我认为纯属偶然),而我的训练准确率仍远低于它。这个时代最终成为自动保存的模型。这是一个糟糕的模型,因为它的训练准确性很差,但由于其高验证准确性而被保存下来。如果它保存在训练和验证精度满足的地方,它会是一个非常好的模型。因此,在每个时期,我更愿意比较训练准确度和验证准确度,选择两者中最低的,并基于此决定我的最佳模型。关于如何做到这一点的任何建议?
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

您可以像这样实现自定义回调:


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]...)


查看完整回答
反对 回复 2021-12-17
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

https://keras.io/callbacks/查看回调 ModelCheckpoint

您可以保存每个时期的模型,并在文件名中包含准确度/验证准确度(或之后检查历史对象)。


查看完整回答
反对 回复 2021-12-17
  • 2 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信