2017-08-07 9 views
1

tf.tile操作はGPUのデバイス上で実行するために失敗したためにデバイスを割り当てることができません。 このコード:中Tensorflowエラー:操作「タイル」

import tensorflow as tf 

with tf.device('/gpu:0'): 
    tt = tf.tile(tf.range(4), [3]) 

with tf.Session() as sess: 
    print(sess.run(tt)) 

結果:

Caused by op u'Tile', defined at: 
    File "test_tf3.py", line 6, in <module> 
    tt = tf.tile(tf.range(4), [3]) 
    File "/media/awork/home/astepochkin/drecs/repo/env/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 3847, in tile 
    name=name) 
    File "/media/awork/home/astepochkin/drecs/repo/env/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 767, in apply_op 
    op_def=op_def) 
    File "/media/awork/home/astepochkin/drecs/repo/env/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2630, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
    File "/media/awork/home/astepochkin/drecs/repo/env/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1204, in __init__ 
    self._traceback = self._graph._extract_stack() # pylint: disable=protected-access 

InvalidArgumentError (see above for traceback): Cannot assign a device for operation 'Tile': Could not satisfy explicit device specification '/device:GPU:0' because no supported kernel for GPU devices is available. 
    [[Node: Tile = Tile[T=DT_INT32, Tmultiples=DT_INT32, _device="/device:GPU:0"](range, Tile/multiples)]] 

私はtensorflow源に見て、GPUのためのタイルを実装するファイルを発見しました。だから私はそれが動作しない理由を理解していない。 誰も助けてくれませんか?

+0

あなただけのインデックスの前に戻ってint型へ、その後フロートとし、それを唱えられます。 /:HTTPS - これは実用的なユースケースには多くの物事を遅くする場合にも、それはtensorflowのgithubの中に機能要求 –

+0

誰かがちょうどタイルのINT32 GPUのサポートを追加し、それはおそらく今日習得するためにマージされますよを提出することには意味があります/github.com/tensorflow/tensorflow/pull/12183 –

+0

私はそれを求めてきましたので:)私はすべての整数型を求めたが、彼らは唯一のint32のために加えうん...、ように見える:) – Stepochkin

答えて

0

あなたのタイプはint32ですと何のGPUカーネルがこのタイプに対して登録されていないからです。回避策として

+0

何もないよりはましです私はそれが奇妙な制限だと私に言った。私はいくつかの索引算術を必要としており、CPUとGPUメモリの間にかなりのインデックステンソルを移動させたくありません。そのような制限の理由は何ですか? – Stepochkin

+0

それはまだGPU上でできるように(「軸」パラメータは依然として起因HostMemoryアノテーションにCPUに格納されている)、そのインデックステンソルを登録する別のマクロを使用して収集するように見える - https://github.com/tensorflow/tensorflow /blob/d0750e970ff448177e759f9cc4c34d60b787cd21/tensorflow/core/kernel/gather_op.cc#L121 –