D'après ce que j'ai rassemblé jusqu'à présent, il existe plusieurs façons de vider un graphique TensorFlow dans un fichier, puis de le charger dans un autre programme, mais je n'ai pas été en mesure de trouver des exemples / informations clairs sur leur fonctionnement. Ce que je sais déjà, c'est ceci:
- Enregistrez les variables du modèle dans un fichier de point de contrôle (.ckpt) en utilisant a
tf.train.Saver()
et restaurez-les plus tard ( source ) - Enregistrer un modèle dans un fichier .pb et le recharger en utilisant
tf.train.write_graph()
ettf.import_graph_def()
( source ) - Charger un modèle à partir d'un fichier .pb, le recycler et le vider dans un nouveau fichier .pb à l'aide de Bazel ( source )
- Figer le graphique pour enregistrer le graphique et les poids ensemble ( source )
- Utilisez
as_graph_def()
pour enregistrer le modèle, et pour les poids / variables, les mapper en constantes ( source )
Cependant, je n'ai pas pu clarifier plusieurs questions concernant ces différentes méthodes:
- En ce qui concerne les fichiers de point de contrôle, enregistrent-ils uniquement les poids entraînés d'un modèle? Les fichiers de point de contrôle peuvent-ils être chargés dans un nouveau programme et être utilisés pour exécuter le modèle, ou servent-ils simplement à enregistrer les poids dans un modèle à un certain moment / étape?
- Concernant
tf.train.write_graph()
, les poids / variables sont-ils également enregistrés? - En ce qui concerne Bazel, peut-il uniquement enregistrer dans / charger des fichiers .pb pour le recyclage? Existe-t-il une simple commande Bazel juste pour vider un graphique dans un .pb?
- En ce qui concerne le gel, un graphique figé peut-il être chargé en utilisant
tf.import_graph_def()
? - La démo Android pour TensorFlow se charge dans le modèle Inception de Google à partir d'un fichier .pb. Si je voulais remplacer mon propre fichier .pb, comment procéderais-je? Aurais-je besoin de changer de code / méthodes natifs?
- En général, quelle est exactement la différence entre toutes ces méthodes? Ou plus largement, quelle est la différence entre
as_graph_def()
/.ckpt/.pb?
En bref, ce que je recherche, c'est une méthode pour enregistrer à la fois un graphique (comme dans, les différentes opérations et autres) et ses poids / variables dans un fichier, qui peut ensuite être utilisé pour charger le graphique et les poids dans un autre programme , à utiliser (pas nécessairement de poursuite / de recyclage).
La documentation sur ce sujet n'est pas très simple, donc toute réponse / information serait grandement appréciée.