我想保存我的张量流会话sess
,但我有以下错误
ValueError: Parent directory of trained_variables.ckpt doesn't exist, can't save.
这是我的代码行:
saver.save(sess, "trained_variables.ckpt")
我还尝试更改文件名并放置model
而不是trained_variables.ckpt
,但我遇到了同样的问题。
答案 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”)