web-dev-qa-db-fra.com

Tensorflow - ValueError: Le répertoire parent de driven_variables.ckpt n'existe pas, ne peut pas être enregistré

Je veux enregistrer ma session tensorflow sess mais j'ai l'erreur suivante

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

Ceci est ma ligne de code:

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

J'ai aussi essayé de changer le nom du fichier et de mettre model au lieu de trained_variables.ckpt mais le même problème se pose.

Suite à ce didacticiel Didacticiel TensorFlow: Classification des courriers électroniques

23
bker

Je suppose que vous essayez de sauvegarder le fichier dans un dossier (répertoire) qui n'existe pas ...

Essayez d’utiliser un chemin absolu pour le fichier au lieu du nom de fichier seul. 

Vous voudrez peut-être vérifier quel est votre répertoire de travail actuel ... cela pourrait éclaircir les choses.

Est ce que ça aide?

-Josh

10
JR Meyer
saver.save(sess, "./trained_variables.ckpt")
49
user3027221

Voici ce que j'ai fait

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

Je crois que cela devrait fonctionner pour vous.

6
Amir Md Amiruzzaman

Je ne suis pas sûr de comprendre. Vous essayez de stocker les variables dans le répertoire en cours, il est donc étrange de dire que le parent du répertoire en cours n'existe pas Pouvez-vous essayer ceci

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')

Cela a fonctionné pour moi. En règle générale, vous devez toujours vous assurer que le chemin d'accès à l'emplacement où vous souhaitez stocker les points de contrôle existe. Quelque chose comme ça:

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)
6
kafman

chemin_sauvegarde devrait toujours être un chemin au lieu d'un nom de fichier ici. Je n'appellerais pas cela un bug, mais il est préférable que TensorFlow ajoute du code pour convertir automatiquement le nom de fichier "abc" en "./abc" pour le rendre plus pratique. 

Dans tensorflow/python/training/saver.py :

Ligne:

save_path_parent = os.path.dirname(save_path) 

essaiera d’obtenir le chemin, si vous n’indiquez qu’un nom de fichier sans chemin, save_path_parent deviendra vide et échouera au test suivant: 

gfile.IsDirectory(save_path_parent)

Vous devez donc toujours fournir un chemin + nom de fichier lorsque vous utilisez la méthode saver.save (). Utiliser uniquement le nom du fichier entraînera cette erreur.

1
Ning

Vous pouvez utiliser votre répertoire de travail actuel:

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