Tensorflow - ValueError:trained_variables.ckpt的父目录不存在,无法保存

时间:2017-02-09 10:36:21

标签: tensorflow

我想保存我的张量流会话sess,但我有以下错误

ValueError: Parent directory of trained_variables.ckpt doesn't exist, can't save.

这是我的代码行:

saver.save(sess, "trained_variables.ckpt")

我还尝试更改文件名并放置model而不是trained_variables.ckpt,但我遇到了同样的问题。

按照本教程A TensorFlow Tutorial: Email Classification

8 个答案:

答案 0 :(得分:52)

saver.save(sess, "./trained_variables.ckpt")

答案 1 :(得分:13)

我猜你在尝试将文件保存在一个不存在的文件夹(目录)中......

尝试使用文件的绝对路径而不是仅使用裸文件名。

您可能想要检查当前的工作目录是什么......这可以清理事情。

这有帮助吗?

-josh

答案 2 :(得分:9)

我已经放置了文件的绝对路径而不是裸文件名并且它有效。 这是最终的代码

saver.save(sess, os.path.join(os.getcwd(), 'trained_variables2.ckpt'))

答案 3 :(得分:6)

我不确定我理解。您正在尝试将变量存储到当前目录中,因此它说当前目录的父目录不存在是奇怪的。你能试试吗

v = tf.Variable(tf.constant(0))
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    saver = tf.train.Saver()
    saver.save(sess, 'trained_variables.ckpt')

这对我有用。通常,您应始终确保存在要存储检查点的路径。像这样:

save_path = 'checkpoints/'
model_name = 'my_model'
if not os.path.exists(save_path):
    os.makedirs(save_path)
...
saver = tf.train.Saver()
save_path_full = os.path.join(save_path, model_name)
with tf.Session() as sess:
   ...
   saver.save(sess, save_path_full)

答案 4 :(得分:6)

这就是我做的事情

 modelName = "YourModelName"
 saver.save(session, './'+modelName) 

我相信这对你有用。

答案 5 :(得分:1)

save_path应始终是路径而不是文件名。我不会把它称为bug,但TensorFlow最好添加一些代码来自动转换文件名" abc"到" ./ abc"使它更方便。

tensorflow/python/training/saver.py中:

行:

save_path_parent = os.path.dirname(save_path) 

将尝试获取路径名,如果您只输入没有路径的文件名, save_path_parent 将变为空并且以后的测试失败:

gfile.IsDirectory(save_path_parent)

因此,在使用saver.save()方法时,必须始终提供路径+文件名。仅使用文件名将导致此错误。

答案 6 :(得分:0)

您可以使用当前的工作目录:

import os​​
checkpoint = os.path.join(os.getcwd(), 'chatbot_weights.ckpt')​

答案 7 :(得分:0)

对于Linux:

saver.save(sess,“ trained_variables.ckpt”)

对于Windows:

saver.save(sess,“ ./trained_variables.ckpt”)