tf.train.Saver无法从路径还原检查点

时间:2018-06-25 23:05:49

标签: python-3.x tensorflow

我在TensorFlow(v1.8)Saver上遇到问题。我为检查点文件指定了一个路径,该路径可以正确保存,但是在恢复时会引发异常,即使使用相同的名称也是如此。

checkpoint_path = "/some_dir_1/some_dir_2/my-checkpoint"
saver = tf.train.Saver(save_relative_paths=True)
saver.save(sess, checkpoint_path) # This works correctly
saver.restore(sess, checkpoint_path) # This doesn't

saver.save()方法可以正常工作,创建相应的 my-checkpoint.data my-checkpoint.index my-checkpoint.meta 文件放在“ / some_dir_1 / some_dir_2”中。

还原方法不适用于与保存方法相同的确切路径。我收到以下异常:

  

NotFoundError(请参阅上面的回溯):不成功的TensorSliceReader构造函数:未能找到/ some_dir_1 / some_dir_2 / my-checkpoint的任何匹配文件        [[节点:保存/恢复V2 =恢复V2 [dtypes = [DT_DOUBLE,DT_DOUBLE,DT_DOUBLE],_ device =“ / job:localhost /副本0 /任务:0 /设备:CPU:0”](_ arg_save / Const_0_0,保存/ RestoreV2 / tensor_names,保存/恢复V2 / tensor_slices)]]

奇怪的是,如果您没有指定检查点的嵌套路径,而是将检查点指定在当前工作目录(例如saver.save(sess, './awesome-checkpoint')saver.restore(sess, './awesome-checkpoint'))中,则它可以正常工作。

>

还有其他人经历过吗?这是我做错事了吗?

1 个答案:

答案 0 :(得分:0)

找到了解决方案。将检查点文件及其父目录重命名为python命名兼容名称即可解决此问题。

我怀疑,因为检查点文件实际上是代码,所以这些文件及其父目录必须使用符合python的命名方式命名。这意味着像“ [”或“-”之类的某些字符将不起作用(这是我的问题)。尚未证实这是原因。

相关问题