张量流:加载检查点

原文标题tensorflow: load checkpoint

我一直在训练一个看起来有点像的模型:

base_model = tf.keras.applications.ResNet50(weights=weights, include_top=False, input_tensor=input_tensor)

for layer in base_model.layers:
    layer.trainable = False

x = tf.keras.layers.GlobalMaxPool2D()(base_model.output)

output = tf.keras.Sequential()
output.add(tf.keras.layers.Dense(2, activation='linear'))
output.add(tf.keras.layers.Dense(2, activation='linear'))
output.add(tf.keras.layers.Dense(2, activation='linear'))
output.add(tf.keras.layers.Dense(2, activation='linear'))
output.add(tf.keras.layers.Dense(2, activation='linear'))

return output(x)

我使用以下代码设置检查点保存:

cp_callback = tf.keras.callbacks.ModelCheckpoint(
    filepath=checkpoint_path,
    verbose=1,
    save_weights_only=True,
    save_freq=batch_size*5)

昨天我开始了 11 个 epoch 的适合跑步。我不知道为什么,但机器在第 7 个时期重新启动。自然,我想从 epoch 7 开始恢复拟合。

上面的检查点代码创建了三个文件:

enter image description here

检查点的内容是:

model_checkpoint_path: "checkpoint"
all_model_checkpoint_paths: "checkpoint"

其他两个文件是二进制文件。我尝试同时加载检查点权重:

model.load_weights('./2022-03-16_21-10/checkpoints/checkpoint.data-00000-of-00001')
model.load_weights('./2022-03-16_21-10/checkpoints/')

两者都以NotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files失败。

如何恢复此检查点并因此恢复拟合?

我正在使用张量流 2.4。

原文链接:https://stackoverflow.com//questions/71517152/tensorflow-load-checkpoint

回复

我来回复
  • elbe的头像
    elbe 评论

    这些可能会有所帮助:Training checkpointsandtf.train.Checkpoint。根据文档,您应该能够使用以下内容加载模型:

    model = tf.keras.Model(...)
    checkpoint = tf.train.Checkpoint(model)
    # Restore the checkpointed values to the `model` object.
    checkpoint.restore(save_path)
    

    如果检查点包含其他变量,我不确定它是否会起作用。您可能必须使用checkpoint.restore(path).expect_partial()

    您还可以通过手动检查检查点来检查已保存的内容(根据文档):

    reader = tf.train.load_checkpoint('./tf_ckpts/')
    shape_from_key = reader.get_variable_to_shape_map()
    dtype_from_key = reader.get_variable_to_dtype_map()
    
    sorted(shape_from_key.keys())
    
    2年前 0条评论