Tensorflow : Quelle est la relation entre les deux .ckpt fichier et .ckpt.meta et .ckpt.de l'index , et .pb de fichier
J'ai utilisé saver=tf.train.Saver()
pour enregistrer le modèle que j'ai formés, et j'ai trois sortes de fichiers nommés:
- .ckpt.meta
- .ckpt.l'indice de
- .ckpt.les données
Et un fichier appelé:
- point de contrôle
Quel est le lien avec le .ckpt fichier?
J'ai vu quelqu'un modèle enregistré avec seulement .ckpt fichier, je ne sais pas comment le faire.
Comment puis-je enregistrer le modèle .pb de fichier?
Vous devez vous connecter pour publier un commentaire.
l' .ckpt fichier est l'ancienne version de sortie de
saver.save(sess)
, qui est l'équivalent de votre.ckpt-data
(voir ci-dessous)le "point de contrôle" fichier de est ici uniquement pour dire quelques TF fonctions, qui est le dernier point de contrôle du fichier.
.ckpt-meta
contient les metagraph, c'est à dire la structure de votre graphe, sans les valeurs des variables (en gros ce que vous pouvez voir dans tensorboard/graphique)..ckpt-data
contient les valeurs pour toutes les variables, sans structure. Pour restaurer un modèle en python, vous aurez généralement utiliser les méta-données et fichiers avec (mais vous pouvez également utiliser le.pb
fichier):Je ne sais pas exactement pour
.ckpt-index
, je suppose que c'est une sorte d'index nécessaires en interne pour carte, les deux fichiers précédents correctement. De toute façon ce n'est pas vraiment nécessaire d'habitude, vous pouvez restaurer un modèle avec seulement.ckpt-meta
et.ckpt-data
.la
.pb
fichier pouvez enregistrer l'ensemble de votre graphique (meta + données). Pour charger et utiliser (mais pas de train) un graphique en c++, vous aurez l'habitude de l'utiliser, créé avecfreeze_graph
, ce qui crée de la.pb
fichier à partir de la méta et des données. Attention, (au moins dans la précédente TF versions et pour certains), la py fonction fournie parfreeze_graph
ne fonctionne pas correctement, vous devez utiliser la version de script. Tensorflow fournit également untf.train.Saver.to_proto()
méthode, mais je ne sais pas ce qu'il fait exactement.Il y a beaucoup de questions sur la façon de sauvegarder et de restaurer un graphique. Voir la réponse ici par exemple, mais attention à ce que les deux cités tutoriels, bien que très utiles, sont loin d'être parfait, et beaucoup de gens semblent encore à la lutte pour l'importation d'un modèle en c++.
MODIFIER:
il ressemble à vous pouvez également utiliser l' .ckpt fichiers en c++ maintenant, donc je suppose que vous n'avez pas nécessairement besoin de l' .pb de fichier plus.
saver = tf.train.import_meta_graph(path_to_ckpt_meta) saver.restore(sess, path_to_ckpt_data)
et ensuite utiliser une collection ou un nom de variable pour récupérer un handle sur votre important d'entrée et de sortie tenseurs, puis exécutez l'inférence comme si vous n'aviez pas sauvegardé et chargé, avec qqch commesess.run([prediction_class],feed_dict={x_input: data})