2016-04-27 7 views
33

Ich erstelle neuronale Netze mit Tensorflow und skflow; Aus irgendeinem Grund möchte ich die Werte einiger innerer Tensoren für einen gegebenen Eingang erhalten, also verwende ich myClassifier.get_layer_value(input, "tensorName"), myClassifier ist ein skflow.estimators.TensorFlowEstimator.In Tensorflow, erhalten Sie die Namen aller Tensoren in einem Diagramm

Allerdings finde ich es schwierig, die richtige Syntax des Tensornamens zu finden, sogar seinen Namen zu kennen (und ich bin verwirrt zwischen Operation und Tensoren), also verwende ich Tensorboard, um das Diagramm zu plotten und zu suchen der Name.

Gibt es eine Möglichkeit, alle Tensoren in einem Diagramm ohne Tensboard aufzuzählen?

Antwort

74

können Sie tun

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

Auch, wenn Sie in einem IPython Notebook sind Prototyping, können Sie die Grafik direkt in Notebook zeigen, siehe show_graph Funktion in Alexanders Tiefer Traum notebook

+0

Sie können dies für z.B. Variablen durch Hinzufügen von "if" Variable "in n.op" am Ende des Verständnisses. – Radu

5

tf.all_variables() können Sie erhalten die gewünschten Informationen.

Auch this commit heute in TensorFlow Erfahren Sie, dass bietet eine Funktion get_variable_names in Schätzer, die Sie verwenden können, um alle Variablennamen leicht abrufen.

+0

Diese Funktion ist veraltet – CAFEBABE

+3

... und ihr Nachfolger ist 'tf.global_variables()' – bluenote10

+6

das holt nur Variablen, keine Tensoren. –

10

Es gibt eine Möglichkeit, es etwas schneller als in Yaroslavs Antwort mit get_operations zu tun. Hier ist ein kurzes Beispiel:

import tensorflow as tf 
a = tf.constant(1.3, name='const_A') 
b = tf.Variable(3.1, name='b') 
c = tf.add(a, b, name='addition') 
d = tf.multiply(c, a, name='multiply') 

for op in tf.get_default_graph().get_operations(): 
    print str(op.name) 
+0

Ich denke, dass print (str (op.name)) in der letzten Zeile korrekt ist. – Cristi

1

Ich denke, dies zu tun:

print(tf.contrib.graph_editor.get_tensors(tf.get_default_graph())) 

Aber im Vergleich mit Salvado und Yaroslavs Antworten, ich weiß nicht, was besser ist.

Verwandte Themen