2017-02-09 43 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')​