2017-10-07 7 views
1

Tensorflow API a fourni peu de modèles pré-formés et nous a permis de les former avec n'importe quel ensemble de données.Comment exécuter plusieurs graphiques dans une session - API Tensorflow

Je voudrais savoir comment initialiser et utiliser plusieurs graphiques dans une session tensorflow. Je veux importer deux modèles formés dans deux graphiques et les utiliser pour la détection d'objet, mais je suis perdu en essayant d'exécuter plusieurs graphiques dans une session.

Existe-t-il une méthode particulière pour travailler avec plusieurs graphiques en une seule session? Un autre problème est que, même si je crée deux sessions différentes pour 2 graphes différents et que j'essaie de les utiliser, je finis par obtenir un résultat similaire dans le second depuis la première session instanciée.

Répondre

1

Chaque Session ne peut avoir qu'un seul Graph. Cela étant dit, selon ce que vous essayez de faire, vous avez quelques options.

La première option consiste à créer deux sessions distinctes et à charger un graphique dans chaque session, comme expliqué dans the documentation here. Vous avez mentionné que vous obteniez des résultats inattendus similaires à chaque session avec cette approche, mais sans plus de détails, il est difficile de déterminer quel est le problème spécifique à votre cas. Je suppose que le même graphique a été chargé à chaque session ou lorsque vous essayez d'exécuter chaque session séparément, la même session est exécutée deux fois, mais sans plus de détails, c'est difficile à dire.

La deuxième option consiste à charger les deux graphiques en tant que sous-graphes du graphique de session principal. Vous pouvez créer deux étendues dans le graphique et générer le graphique pour chacun des graphiques que vous souhaitez charger dans cette étendue. Ensuite, vous pouvez simplement les traiter comme des graphiques indépendants car il n'y a pas de liens entre eux. Lorsque vous exécutez des fonctions globales de graphique, vous devez spécifier la portée de ces fonctions. Par exemple, lors de la préformation d'une mise à jour sur l'un des sous-graphes avec son optimiseur, vous devez obtenir uniquement les variables pouvant être entraînées pour la portée de ce sous-graphe en utilisant quelque chose comme this answer. À moins que vous n'ayez explicitement besoin des deux graphiques pour pouvoir interagir d'une manière ou d'une autre dans le graphique TensorFlow, je recommande la première approche afin de ne pas avoir à passer par les arcs supplémentaires dont les sous-graphes auront besoin (comme avoir besoin de filtrer la portée de votre travail à un moment donné, et la possibilité de graver des choses globales partagées entre les deux).

+0

Merci pour la réponse. Je ne suis pas au courant de la performance de la deuxième option, mais la création de deux sessions pourrait avoir une grande charge sur le CPU/GPU et alors nous pourrions ne pas être en mesure de les utiliser en temps réel. Pensez-vous que la deuxième option aura un impact similaire ou moindre sur le CPU? Je vais essayer de vous fournir plus de détails sur la création de différentes sessions de questions au plus tôt. – saikishor

+0

@SaiKishorKothakota: À moins que les deux graphiques chargés ne partagent des variables, je ne pense pas que deux sessions conduisent à une utilisation plus importante du processeur/GPU que de les charger toutes les deux en une seule session. La surcharge de la session devrait être minime par rapport à l'utilisation de la mémoire des éléments graphiques eux-mêmes (dans la plupart des cas). – golmschenk

+0

Veuillez trouver le code ici: https://pastebin.com/VnN8f8FC. Si vous le pouvez, essayez de donner vos commentaires à ce sujet. Merci, – saikishor