【问题标题】:How to load my tensorflow model with ModelCheckpoint callbacks?如何使用 ModelCheckpoint 回调加载我的 tensorflow 模型?
【发布时间】:2020-05-27 16:27:57
【问题描述】:

我已经训练了一个模型并使用 ModelCheckpoint 保存了权重:

checkpoint_callback = ModelCheckpoint(
    filepath = checkpoint_prefix,
    save_weights_only = True,
    save_freq = 'epoch')

在我的模型训练的晚上,我断电了一段时间,我的电脑也关闭了。现在我打开了我的 Jupyter 笔记本,我想加载我的模型而不从一开始就对其进行训练。我应该如何在不重新编译而只使用检查点的情况下做到这一点? 我也有张量板回调:

tensorboard_callback = TensorBoard(
    log_dir = 'tensorboard_logs\\'+ model_name,
    histogram_freq = 5,
    write_graph = True,
    update_freq = 'epoch')

【问题讨论】:

    标签: deep-learning callback conv-neural-network tensorflow2.0 tf.keras


    【解决方案1】:

    由于您只保存了模型的权重,因此您需要重建图形,然后在其上加载最后一个检查点的权重。

    因此,您必须重新创建模型并进行编译。
    下次如果要保存完整的模型,不用每次加载都重新编译,设置save_weights_onlyFalse
    它允许您使用keras.models.load_model() 加载您的模型,然后直接拟合它。

    model = Sequential()
    model.add() 
    ...
    model.compile()
    

    然后加载你的重量:

    model.load_weights(checkpoint_prefix)
    

    然后你就可以正常使用了:

    model.fit( ... )
    

    【讨论】:

    • 非常感谢。之前我保存了一个这样的模型:model_path = "model_save\\tiny_resnet_tune" tiny_resnet_tune.save(model_path)。但是电停了几秒钟,我无法做到这一点。我只有模型中的检查点,这些检查点是用 ModelCheckpoint 保存的。由于我是这个领域的新手,我有很多东西要学,像这样的问题给我带来了一些不好的时间。
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多