2016-09-24 6 views
8

Tensorflow documentationは、ノードのデバイスの配置を見つける上で次のコード例を持っているものをプリントアウトしません。すなわち、どの装置で特定の計算が行われるかである。Tensorflowドキュメントのサンプルコードは、

# Creates a graph. 
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') 
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') 
c = tf.matmul(a, b) 
# Creates a session with log_device_placement set to True. 
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 
# Runs the op. 
print sess.run(c) 

私の場合、コードは想定されているようにデバイスの場所を表示しません。私はUbuntuで動作するJupyterノートブックを使用しています。私はこれを修正したり、情報を他の方法で見つけることができますか?

答えて

3

残念ながら、Jupyterには、デバイス配置ログが使用するC++エラーstdoutメッセージが表示されません。ここでの問題の長いスレッドがあります:

https://github.com/nteract/hydrogen/issues/209

Jupyterの外にスクリプトを実行している以外の私の知っている簡単な回避策は、ありません。

7

Jupyter(およびその他の)ユーザーの場合、Session.run()コールを作成してノートブックに印刷すると、デバイスの配置を読み取ることができるようになりました。

# Creates a graph. 
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') 
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') 
c = tf.matmul(a, b) 
# Creates a session with log_device_placement set to True. 
sess = tf.Session() 

# Runs the op. 
options = tf.RunOptions(output_partition_graphs=True) 
metadata = tf.RunMetadata() 
c_val = sess.run(c, options=options, run_metadata=metadata) 

print metadata.partition_graphs 
metadata.partition_graphs

は、デバイスによって仕切ら、実行グラフの実際のノードを含みます。区画は、それらが表すデバイスで明示的にラベル付けされていませんが、グラフ内のすべてのNodeDefは、deviceフィールドが設定されています。

+0

'' '' – guillefix

+2

は単に 'print metadata.partition_graphs'の代わりに' print metadata'を使います。あなたはオブジェクトのセットを見るでしょう。それぞれを 'print metadata.partition_graphs [0]'のようにインデックスで見ることができます。 –

0

ターミナルのjupyterノートブックプロセスから標準に出力されたデバイスマッピングを見ることができます。ノートブックには印刷されません。

関連する問題