Comment obtenez-vous le nom de la tensorflow des nœuds de sortie dans un Keras Modèle?
Je suis en train de créer un pb de fichier à partir de mon Keras (tensorflow backend) modèle afin que je puisse construire sur iOS. Je suis à l'aide d'freeze.py et j'ai besoin de passer les nœuds de sortie. Comment puis-je obtenir les noms des nœuds de sortie de mon Keras modèle?
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py
OriginalL'auteur agsolid | 2016-10-13
Vous devez vous connecter pour publier un commentaire.
Si des nœuds de sortie ne sont pas explicitement spécifié lors de la construction d'un modèle dans Keras, vous pouvez les imprimer comme ceci:
[print(n.name) for n in tf.get_default_graph().as_graph_def().node]
Puis tout ce que vous devez faire est de trouver le bon, ce qui est souvent similaire au nom de l'activation de la fonction. Vous pouvez simplement utiliser ce nom de chaîne que vous avez trouvé comme valeur pour
output_node_names
dansfreeze_graph
fonction.L'amour vous Oleg!! Merci pour cette!
OriginalL'auteur Oleg F.
Vous pouvez utiliser Keras modèle.résumé() pour obtenir le nom de la dernière couche.
Si le modèle.sorties n'est pas vide, vous pouvez obtenir les noms des nœuds via:
vous obtenez la session via
et de convertir l'ensemble de la formation des variables à consts via
après cela, vous pouvez écrire un protobuf-fichier via
[nœud.op.nom de nœud dans le modèle.sorties] a été la clé pour moi. Je n'ai trouvé AUCUNE documentation officielle de m'indiquer comment faire pour récupérer les nœuds de sortie pour un modèle compilé et ajustement par Keras API avec Tensorflow.
OriginalL'auteur BerndSchmitt
Vous pouvez également utiliser le tensorflow utilitaire:
summarize_graph
afin de trouver desoutput_nodes
. À partir de la la documentation officielle:Il faut juste la sauvé graphique
pb
fichier comme entrée. Consultez la documentation pour un exemple.vous pouvez également générer un graph_def .pd fichier par programmation via l'API Python comme ceci: tf.le train.write_graph(keras.backend.get_session().graphique, <chemin d'accès de l'endroit où vous voulez gen .pb>, "model_serial.pb", as_text=False).
Merci pour la suggestion, je vais vous donner que d'essayer. Son été un certain temps, mais je crois qu'à l'époque j'ai modifié le code pour être en mesure d'inspecter le graphique avec tensorboard et ensuite renforcé à travers le graphe avec tfdbg. tfdbg est génial.
OriginalL'auteur Monster
La
output_node_names
doit contenir les noms des noeuds d'un graphe vous avez l'intention d'utiliser pour l'inférence(par exemple softmax). Il est utilisé pour extraire le sous-graphe qui seront nécessaires pour l'inférence.Il peut être utile de regarder freeze_graph_test.
OriginalL'auteur Saurabh Saxena