9

我正在使用 TensorFlow r0.12。

我在本地使用 google-cloud-ml 来运行 2 个不同的训练作业。在第一份工作中,我为我的变量找到了好的初始值。我将它们存储在 V2 检查点中。

当我尝试恢复我的变量以在第二份工作中使用它们时:

import tensorflow as tf

sess = tf.Session()
new_saver = tf.train.import_meta_graph('../variables_pred/model.ckpt-10151.meta', clear_devices=True)
new_saver.restore(sess, tf.train.latest_checkpoint('../variables_pred/'))
all_vars = tf.trainable_variables()
for v in all_vars:
    print(v.name)

我收到以下错误消息:

tensorflow.python.framework.errors_impl.InternalError: Unable to get element from the feed as bytes.

检查点是在第一个作业中使用这些行创建的:

saver = tf.train.Saver()
saver.export_meta_graph(filename=os.path.join(output_dir, 'export.meta'))
saver.save(sess, os.path.join(output_dir, 'export'), write_meta_graph=False)

根据这个答案,它可能来自没有元数据文件,但我正在加载元数据文件。

PS:我使用这个论点clear_devices=True是因为在 google-cloud-ml 上启动生成的设备规范非常复杂,我不需要获得相同的调度。

4

3 回答 3

12

错误消息是由于疏忽导致缺少名为“检查点”的文件。

在适当的文件夹中重新引入此文件后,检查点的加载似乎正在工作。

很抱歉省略了这个关键点。

于 2017-01-04T14:36:39.913 回答
1

我认为问题可能是当您保存模型时设置 write_meta_graph=False。因此,我认为您实际上并没有保存图表,因此当您尝试恢复时,没有要恢复的图表。尝试设置 write_meta_graph=True

于 2016-12-29T15:34:57.333 回答
-1

错误消息也是由于疏忽导致名为“checkpoint”的文件中的错误。

例如,包含模型的文件夹已被移动,但“checkpoint”中“model_checkpoint_path:”的值仍然是旧路径。

于 2017-10-24T08:17:49.850 回答