我有一个经过训练的模型,它是使用 tf.train.Saver
保存的,生成4个相关文件
-
checkpoint
-
model_iter-315000.data-00000-of-00001
-
model_iter-315000.index
-
model_iter-315000.meta
现在由于是通过docker容器生成的,所以机器本身和docker上的路径是不同的,就好像我们在两台不同的机器上工作一样。
我正在尝试在容器外部加载保存的模型。
当我运行以下命令时
sess = tf.Session()
saver = tf.train.import_meta_graph('path_to_.meta_file_on_new_machine') # Works
saver.restore(sess, tf.train.latest_checkpoint('path_to_ckpt_dir_on_new_machine') # Fails
错误是
tensorflow.python.framework.errors_impl.NotFoundError: PATH_ON_OLD_MACHINE; No such file or directory
即使我在调用 tf.train.latest_checkpoint
时提供了新路径我收到错误,该错误显示旧路径上的路径。
我该如何解决这个问题?
最佳答案
“检查点”文件是一个索引文件,它本身嵌入了路径。在文本编辑器中打开它并将路径更改为正确的新路径。
或者,使用 tf.train.load_checkpoint()
加载特定的检查点,而不是依赖 TensorFlow 为您找到最新的检查点。在这种情况下,它不会引用“检查点”文件,并且不同的路径不会成为问题。
或者写一个小脚本来修改“checkpoint”的内容。
关于python - tf.train.Saver - 在不同的机器上加载最新的检查点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997012/