我正在使用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)
根据this answer,它可能来自缺少元数据文件,但我正在加载元数据文件。
PS:我使用参数clear_devices=True
,因为google-cloud-ml上的启动生成的设备规格非常错综复杂,我不一定需要获得同样的调度。
答案 0 :(得分:12)
错误消息是由于缺少名为" checkpoint"的文件。无意中。
在相应的文件夹中重新引入此文件后,似乎加载了检查点。
很抱歉忽略了这个关键点。
答案 1 :(得分:1)
我认为问题可能在于您保存模型时设置了write_meta_graph = False。因此,我认为您实际上并未保存图表,因此当您尝试恢复时,无法恢复图表。尝试设置write_meta_graph = True
答案 2 :(得分:-1)
错误消息也是由于无意中名为“checkpoint”的文件中的错误。
例如,包含模型的文件夹已被移动,但“checkpoint”中的“model_checkpoint_path:”值仍为旧路径。