2017-11-20 12 views
0

2ラウンドフォーループを実装したいと思います。テンソルフロー動的ループのベストプラクティス?

そして、tensorflowして2ラウンドのためのループを実施するための最良の方法は何tf.while_loop

を使用して行うことは困難である見つけますか?

私はそれがこのようなことことを願っています:

import tensorflow as tf 

a = tf.constant([1,2,3,4,5]) 
b = tf.constant([1,2,3,4,5]) 

sess = tf.Session() 

for i in tf.range(tf.constant(0),tf.shape(a)[0]): 
    for j in tf.range(tf.constant(0),tf.shape(b)[0]): 
     print(sess.run([i,j])) 

が、それは可能ですか?

答えて

2

あなたが望む動作を指定していませんが、私が推測したことは、貼り付けたコードが期待通りに動作しないことです。いくつかのオプションがあります:

  • tf.while_loopを使用してください。 whileループを使ってグラフを作成します。このようなグラフを実行すると、CPUやGPUを使用してC++ランタイムで効率的に実行されます。
  • 通常のPythonループ(for i in range(10):)を使用し、session.run()を複数回呼び出します。このようにして、session.run()への呼び出しの間に実行する必要のある操作はすべてPythonで行われ、遅くなる可能性があります。たとえば、session.run()に渡した出力テンソルは、CPUメモリにコピーされます(メイン計算がGPUで実行されている場合)。このアプローチは一般に推奨されません。
  • 最近リリースされたeager executionを使用してください。「ドキュメント」セクションには他のドキュメントのリンクがあります。熱心な実行では、制御フローに任意のPythonコードを使用することができますが、すべての操作はCPU/GPU上で効率的に行われます。
関連する問題