web-dev-qa-db-fra.com

Qu'est-ce que la différence freez_inference_graph.pb et saved_model.pb?

J'ai un modèle formé (Faster R-CNN) que j'ai exporté en utilisant export_inference_graph.py À utiliser pour l'inférence. J'essaie de comprendre la différence entre les fichiers frozen_inference_graph.pb Et saved_model.pb Créés ainsi que model.ckpt*. J'ai également vu des représentations de .pbtxt.

J'ai essayé de lire ceci mais je n'ai pas vraiment trouvé les réponses: https://www.tensorflow.org/extend/tool_developers/

Que contient chacun de ces fichiers? Lesquels peuvent être convertis en quels autres? Quel est le but idéal de chacun?

11
nickponline

freez_inference_graph.pb, est un graphe figé qui ne peut plus être entraîné, il définit le graphdef et est en fait un graphe sérialisé et peut être chargé avec ce code:

def load_graph(frozen_graph_filename):
    with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        return graph_def
tf.import_graph_def(load_graph("frozen_inference_graph.pb"))

le modèle enregistré est un modèle généré par tf.saved_model.builder et doit être importé dans une session, ce fichier contient le graphique complet avec tous les poids de formation (tout comme le graphique figé) mais ici, vous pouvez vous entraîner, et celui-ci n'est pas sérialisé et doit être chargé par cet extrait. Les [] sont des constantes de balises qui peuvent être lues par le saved_model_cli . Ce modèle est également souvent utilisé pour prédire, comme par exemple le moteur google ml:

with tf.Session() as sess:
    tf.saved_model.loader.load(sess, [], "foldername to saved_model.pb, only folder")

les fichiers model.ckpt sont des points de contrôle, générés pendant la formation, qui sont utilisés pour reprendre la formation ou pour effectuer une sauvegarde en cas de problème après la formation. Si vous avez un modèle enregistré et un graphique figé, vous pouvez ignorer cela.

Les fichiers .pbtxt sont fondamentalement les mêmes que les modèles discutés précédemment, mais lisibles par l'homme, pas binaires. Celles-ci peuvent également être ignorées.

Pour répondre à votre question de conversion: les modèles enregistrés peuvent être transformés en un graphique figé et vice versa, bien qu'un modèle sauvegardé extrait d'un graphique figé ne soit pas non plus entraînable, mais la façon dont il est stocké est au format de modèle enregistré. Les points de contrôle peuvent être lus et chargés dans une session, et vous pouvez y créer un modèle enregistré.

J'espère que j'ai aidé, des questions, demandez loin!

14
T. Kelher

Comme pour ajouter, freez_graph.pb comprend deux choses: 1. Définition du graphique 2. Paramètres formés

Alors que save_model.pb, il suffit d'avoir une définition graphique.

C'est pourquoi si vous vérifiez la taille des deux fichiers .pb, freez_graph.pb sera toujours plus grand.

2
vipin bansal