2017-01-12 17 views
2

ich eine Funktion in einer Datei haben neural_network.py, die eine Verlustfunktion definiert:Tensorflow Druck in Funktion

def loss(a, b): 
    ... 
    debug = tf.Print(a, [a], message = 'debug: ') 
    debug.eval(session = ???) 
    return tf.add(a, b) 

Um zu erklären, irgendwo in dieser Funktion möchte ich einen Tensor drucken. Ich habe jedoch keine Sitzung in dieser Funktion deklariert; Meine Sitzungen werden in einer anderen Datei namens forecaster.py deklariert. Daher, wenn ich versuche, tf.Print() in loss() setzen, kann ich nicht, weil ich nicht weiß, welche Sitzung zu eval mit. Gibt es eine Möglichkeit, dieses Problem zu lösen, indem Sie entweder tf.Print() oder andere Debug-Methoden verwenden? Vielen Dank!

Antwort

2

tf.Print funktioniert als eine Identity-Funktion, die den gleichen Tensor zurückgibt, den Sie als ersten Parameter übergeben haben, mit dem Nebeneffekt, dass Sie die Liste der als zweiten Parameter angegebenen Tensoren drucken.

So sollten Sie wie folgt verwendet werden:

def loss(a, b): 
    ... 
    a = tf.Print(a, [a], message = 'debug: ') 
    return tf.add(a, b) 

a wird jedes Mal Tensor gedruckt werden tf.add(a, b) ausgewertet wird.