Après avoir lu la documentation , j'ai enregistré un modèle dans TensorFlow
, voici mon code de démonstration:
# Create some variables.
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# Add an op to initialize the variables.
init_op = tf.global_variables_initializer()
# Add ops to save and restore all the variables.
saver = tf.train.Saver()
# Later, launch the model, initialize the variables, do some work, save the
# variables to disk.
with tf.Session() as sess:
sess.run(init_op)
# Do some work with the model.
..
# Save the variables to disk.
save_path = saver.save(sess, "/tmp/model.ckpt")
print("Model saved in file: %s" % save_path)
mais après cela, j'ai trouvé qu'il y avait 3 fichiers
model.ckpt.data-00000-of-00001
model.ckpt.index
model.ckpt.meta
Et je ne peux pas restaurer le modèle en restaurant le model.ckpt
fichier, car il n'y a pas de tel fichier. Voici mon code
with tf.Session() as sess:
# Restore variables from disk.
saver.restore(sess, "/tmp/model.ckpt")
Alors, pourquoi il y a 3 fichiers?
tensorflow
GoingMyWay
la source
la source
Réponses:
Essaye ça:
La méthode de sauvegarde TensorFlow enregistre trois types de fichiers car elle stocke la structure du graphique séparément des valeurs de variable . Le
.meta
fichier décrit la structure du graphique enregistré, vous devez donc l'importer avant de restaurer le point de contrôle (sinon il ne sait pas à quelles variables les valeurs de point de contrôle enregistrées correspondent).Vous pouvez également faire ceci:
Même s'il n'y a pas de fichier nommé
model.ckpt
, vous faites toujours référence au point de contrôle enregistré par ce nom lors de sa restauration. À partir dusaver.py
code source :la source
00000
et les00001
chiffres? dans levariables.data-?????-of-?????
fichiermeta file : décrit la structure graphique enregistrée, inclut GraphDef, SaverDef, etc. puis appliquez
tf.train.import_meta_graph('/tmp/model.ckpt.meta')
, restaureraSaver
etGraph
.fichier d'index : c'est une table immuable de chaîne de caractères (tensorflow :: table :: Table). Chaque clé est le nom d'un tenseur et sa valeur est un BundleEntryProto sérialisé. Chaque BundleEntryProto décrit les métadonnées d'un tenseur: lequel des fichiers «données» contient le contenu d'un tenseur, le décalage dans ce fichier, la somme de contrôle, certaines données auxiliaires, etc.
fichier de données : il s'agit de la collection TensorBundle, enregistrez les valeurs de toutes les variables.
la source
Je restaure les incorporations de mots entraînés à partir du didacticiel tensorflow de Word2Vec.
Si vous avez créé plusieurs points de contrôle:
par exemple, les fichiers créés ressemblent à ceci
essaye ça
lors de l'appel de restore_session ():
la source
Si vous avez formé un CNN avec abandon, par exemple, vous pouvez le faire:
la source