Wie erhalten Sie den Namen der Tensorflow-Ausgangsknoten in einem Keras-Modell?

9

Ich versuche eine PB-Datei aus meinem Keras (Tensorflow Backend) -Modell zu erstellen, damit ich sie auf iOS erstellen kann. Ich verwende freeze.py und muss die Ausgabeknoten übergeben. Wie bekomme ich die Namen der Ausgabeknoten meines Keras-Modells?

Zypern

    
agsolid 13.10.2016, 18:16
quelle

4 Antworten

6

Wenn bei der Erstellung eines Modells in Keras Ausgabeknoten nicht explizit angegeben werden, können Sie sie wie folgt ausdrucken:

[print(n.name) for n in tf.get_default_graph().as_graph_def().node]

Dann müssen Sie nur noch den richtigen finden, der oft dem Namen der Aktivierungsfunktion ähnelt. Sie können diesen String-Namen, den Sie gefunden haben, einfach als Wert für output_node_names in freeze_graph function verwenden.

    
Oleg F. 25.01.2017 10:17
quelle
3

Sie können auch das Tensorflow-Dienstprogramm verwenden: summarize_graph , um mögliche output_nodes zu finden. Aus der offiziellen Dokumentation :

  

Viele der Transformationen, die das Werkzeug unterstützt, müssen wissen, wie die Eingabe- und Ausgabeschichten des Modells sind. Die beste Quelle hierfür ist der Modelltrainingsprozess, bei dem die Eingaben für einen Klassifizierer die Knoten sind, die die Daten aus dem Trainingssatz erhalten, und die Ausgabe die Vorhersagen sind. Wenn Sie sich nicht sicher sind, kann das summarize_graph-Tool das Modell untersuchen und Vermutungen über wahrscheinliche Eingabe- und Ausgabeknoten sowie andere für das Debuggen nützliche Informationen liefern.

Es braucht nur die gespeicherte Grafik pb file als Eingabe. Sehen Sie in der Dokumentation nach.

    
Monster 31.05.2017 19:34
quelle
2

Das output_node_names sollte die Namen der Diagrammknoten enthalten, die Sie für die Schlussfolgerung verwenden möchten (z. B. softmax). Es wird verwendet, um das Sub-Diagramm zu extrahieren, das sein wird benötigt für die Schlussfolgerung. Es kann nützlich sein, sich freeze_graph_test anzuschauen.

    
Saurabh Saxena 14.10.2016 22:37
quelle
1

Sie können Keras model.summary () verwenden, um den Namen der letzten Ebene abzurufen.

Wenn model.outputs nicht leer ist, können Sie die Knotennamen über:

erhalten %Vor%

Sie erhalten die Sitzung über

%Vor%

und Sie konvertieren alle Trainingsvariablen in Constants über

%Vor%

Danach können Sie eine Protobuf-Datei über

schreiben %Vor%     
BerndSchmitt 07.03.2018 14:56
quelle

Tags und Links