2017-02-09 69 views
10

我要救我的tensorflow会议sess但我有以下错误Tensorflow - ValueError异常:trained_variables.ckpt的父目录不存在,无法保存

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

+0

我跳进了同样的问题。它在Ubuntu中工作,但不在Windows中。 –

回答

1

我猜想,你试图将文件保存在一个文件夹(目录)不存在...

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

你可能想检查一下你当前的工作目录是什么...可以清理一些东西。

这有帮助吗?

-josh

2

我不确定我是否理解。您正在尝试将变量存储到当前目录中,所以很奇怪它说当前目录的父目录不存在。你可以试试这个

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) 
+0

我已经把文件的absoluth路径而不是裸文件名,它的工作。谢谢你的回答 – bker

6

我已经把文件的absoluth路径而不是裸文件名,它的工作。 这是最后的代码

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

20
saver.save(sess, "./trained_variables.ckpt") 
+0

这也解决了我的问题*但是*为什么这个问题首先发生?它之前没有使用'。/'。该程序是否以某种方式改变其位置? –

+0

这是简单而有用的“./”是运行代码的根目录的关键 –

0

的save_path应该永远是一个路径,而不是这里的文件名。我不会把它称为一个错误,但最好是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()方法时,您必须始终提供路径+文件名。只使用文件名会导致这个错误。

4

这里是我做过什么

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

我相信这应该为你工作。

+0

谢谢,它的工作 –

0

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

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