张量流:加载检查点
tensorflow 216
原文标题 :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 开始恢复拟合。
上面的检查点代码创建了三个文件:
检查点的内容是:
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。
回复
我来回复-
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年前