2016-12-18 1 views
6

Ich arbeite an TensorFlow und möchte die Beziehung zwischen jeder Python-Funktion und den entsprechenden C++ - Funktionen hinter der SWIG-Schnittstelle kennenlernen. Mit anderen Worten, ich möchte genau wissen, welche C++ - Funktionen für jede Zeile von Python-Code meiner TensorFlow-Anwendung aufgerufen werden.Wie man C++ - Funktionsaufrufe hinter der SWIG-Schnittstelle sieht, TensorFlow

Ich habe bereits gesehen, wie man den Python-Code here debuggt und wie man bei welcher Codezeile ein Segmentierungsfehler auftritt here, aber auf diese Weise kann ich nur sehen, wo ein Fehler ist, während ich stattdessen möchte in der Lage sein, jeden C++ - Funktionsaufruf zu kennen, selbst wenn es keine Fehler im Code gibt (Im Moment kann ich mit gdb die Systemaufrufe und die dynamischen Bibliotheksaufrufe sehen, aber nicht die C++ - Funktionsaufrufe).

Danke

+0

ist dies auf Windows oder Linux? – Flexo

+0

Es ist Ubuntu 14.04. Die TensorFlow-Version ist stattdessen 0.10.0rc0. – CTF

Antwort

1

Der größte Teil des Codes, der die meisten Menschen für Graph Bau schreiben ist. Fast die gesamte Konstruktion von Graphen findet vollständig in Python statt, wo einfach die (Python) Datenstrukturen wie Operation und Graph definiert in ops.py aufgebaut werden. Die einzige Ausnahme ist die Formschlussfolgerung, die beim Erstellen jeder Operation auftritt. Die Formschlussfolgerung ruft C++ über die in cpp_shape_inference.i definierte Schnittstelle auf. Nachdem Sie das Berechnungsdiagramm erstellt haben, führen Sie es durch Erstellen eines Session und Aufruf sess.run. Dies sind alles Python-Funktionen, die TensorFlows C-API umhüllen. Die Wrapper können in tf_session.i gefunden werden.

+0

Hallo Keveman, ich möchte wissen, welche C++ - Funktionen aufgerufen werden, um die Ausführung einiger Operationen mit einem speziellen Hardware-Beschleuniger zu beschleunigen. Zum Beispiel: Wenn ich sehe, dass der Flaschenhals einer TensorFlow-Anwendungsberechnungszeit das Training eines neuronalen Netzwerks ist (wo ein Gradientenoptimierer mehrmals in einer Schleife aufgerufen wird), kann ich im Moment nicht genau wissen, welche C++ Funktionen funktionieren werden hinter Python-Funktionen aufgerufen (ich kann nur raten, nach ihnen gründlich die TF C++ API zu suchen). Debugging mit Gdb Ich kann nur die Systemaufrufe und die dynamischen Bibliotheksaufrufe sehen. – CTF

Verwandte Themen