首页 > 解决方案 > 张量流的估计器如何加载模型的特定步骤而不是最新的?

问题描述

我们可以使用 Estimator 和RunConfig.

classifiereval 将200默认使用最新的步骤, 我可以加载ckpt-1吗?

my_checkpointing_config = tf.estimator.RunConfig(
    save_checkpoints_secs = 20*60,  # Save checkpoints every 20 minutes.
    keep_checkpoint_max = 10,       # Retain the 10 most recent checkpoints.
)
classifier = tf.estimator.DNNClassifier(
    feature_columns=my_feature_columns,
    hidden_units=[10, 10],
    n_classes=3,
    model_dir='models/iris',
    config=my_checkpointing_config)



$ ls -1 models/iris
checkpoint
events.out.tfevents.timestamp.hostname
graph.pbtxt
model.ckpt-1.data-00000-of-00001
model.ckpt-1.index
model.ckpt-1.meta
model.ckpt-200.data-00000-of-00001
model.ckpt-200.index
model.ckpt-200.meta

标签: tensorflow

解决方案


两者tf.estimator.Estimator.evaluate都有tf.estimator.Estimator.predict争论checkpoint_path。您应该能够提供到model.ckpt-1此处的路径以使用此检查点进行评估。

请注意,此参数是在最近的 TF 更新中添加的(可能是 1.7 或 1.8,不确定),因此如果您使用的是过时的版本,则可能没有此参数可用。有一个 hacky 替代方案:model_dir应该有一个名为checkpoint. 这个文件的第一行应该是

model_checkpoint_path: "model.ckpt-xxxxxx"

其中xxxxxx是最新检查点的步骤数(在您的情况下为 200)。您可以手动将此行更改为您想要Estimator加载的任何检查点。但是,您之后可能希望将其更改回来,或者如果您想继续训练模型,您可能会遇到问题。


推荐阅读