Gibt es einen Weg, um tensorflow tf.Print-Ausgabe erscheint in Jupyter Notebook-Ausgang
Ich bin mit dem tf.Drucken op in einer Jupyter notebook. Es funktioniert wie gewünscht, aber nur drucken die Ausgabe auf der Konsole, ohne Druck in das notebook. Gibt es eine Möglichkeit dies zu umgehen?
Ein Beispiel wäre die folgende (in einem notebook):
import tensorflow als tf
a = tf.Konstante(1.0)
a = tf.Print(a, [a], 'hi')
sess = tf.Session()
ein.eval(session=sess)
Dieser code wird print "Hallo[1]" in der Konsole, aber nichts in das notebook.
- Bitte, fügen Sie einige code hier, was Sie versucht haben.
- Sie können erfassen, sys.stdout
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update Feb 3, 2017
Ich habe verpackt diese in memory_util Paket. Beispiel für die Verwendung
** Old stuff**
Könnte man wiederverwenden FD redirector von IPython Kern. (Idee von Mark Sandler)
Ich lief in das gleiche problem, und bekam, um es mit einer Funktion wie diese in den Notizbüchern:
FYI, mit einem logger anstelle des Aufrufs von "print" in meine benutzerdefinierte Funktion wirkte Wunder für mich, als das stdout wird oft gepuffert jupyter und nicht hier vor der "Verlust " Nan" Art von Fehler-das war der springende Punkt bei der Verwendung dieser Funktion in Erster Linie in meinem Fall.
Können Sie überprüfen Sie das terminal, wo Sie startete die
jupyter notebook
um die Nachricht zu Lesen.In der Klemme, ich kann sehen:
Einen einfachen Weg, versucht es in regelmäßigen python, aber nicht jupyter noch.
os.dup2(sys.stdout.fileno(), 1)
os.dup2(sys.stdout.fileno(), 2)
Erklärung ist hier: In python, wie zu erfassen, die stdout von c++ shared library auf eine variable
Das Problem, das ich konfrontiert wurde, war, dass man nicht eine session im Tensorflow Graphen, wie Sie im training oder bei der Auswertung.
Das ist, warum die Optionen zu verwenden
sess.run(opt)
oderopt.eval()
waren nicht eine Lösung für mich.Das beste war die Verwendung
tf.Print()
und leiten Sie die Protokollierung in eine externe Datei.Ich Tat dies mit einer zeitlichen Datei, die ich übertragen auf eine normale Datei wie dieser:
Und dann in meine Auswertung mache ich: