2016-12-18 11 views
6

私はTensorFlowを扱っており、各Python関数とSWIGインターフェイスの背後にある対応するC++関数との関係を知りたいと思います。 つまり、TensorFlowアプリケーションのPythonコードの各行に対して、どのC++関数が呼び出されたかを正確に知りたいと思っています。SWIGインターフェイス、TensorFlowの背後にあるC++関数呼び出しの見方

は、私はすでにPythonのコードをデバッグする方法を説明しましたhereと、コードのどの行でセグメンテーションフォールトがhereを起こるが、代わりに私がしたいしながら、これらの方法で、私は、エラーがある場合のみ見ることができるよ表示する方法コードにバグがない場合でも、すべてのC++関数の呼び出しを知ることができます(現時点では、gdbでデバッグしていますが、システムコールと動的ライブラリ呼び出しを見ることはできますが、C++関数呼び出しは見ることができません)。

は、ほとんどの人が書くことのコードの大部分は、グラフ構築のためであるあなたに

+0

これはWindowsまたはLinuxでですか? – Flexo

+0

これはUbuntu 14.04です。代わりにTensorFlowバージョンは0.10.0rc0です。 – CTF

答えて

1

ありがとうございます。ほとんどすべてのグラフ構築は、OperationGraphのような(Python)データ構造を単に構築し、ops.pyで定義されているPythonでは完全に発生します。 1つの例外はシェイプの推論で、すべての操作を作成すると発生します。シェイプ推論は、cpp_shape_inference.iで定義されたインタフェースを介してC++に呼び出します。計算グラフを作成したら、と実行し、Sessionを作成してsess.runを呼び出します。これらはすべてTensorFlowのC APIをラップするPython関数です。ラッパーはtf_session.iにあります。

+0

こんにちはkeveman!専用のハードウェアアクセラレータを使用していくつかの演算の実行を高速化するために、どのC++関数が呼び出されたのかを知りたいと思います。たとえば、TensorFlowアプリケーションの計算時間のボトルネックが、ニューラルネットワーク(グラディエントオプティマイザがループ内で何回か呼び出される)の訓練であることがわかっている場合、現時点ではどのC++関数が正確にわからないPython関数の背後で呼び出されています(私はTF C++ APIを完全に探しています)。 gdbでデバッグする私はシステムコールとダイナミックライブラリ呼び出ししか見ることができません。 – CTF

関連する問題