2017-09-17 8 views
0

tfでこの操作をコーディングする際に問題があります。ここでは、1つの[n、2]プレースホルダxと1つの[n、1]プレースホルダyがあると仮定します。 x = [[1,2]、[3,4]、[5,6]] y = [1,0,1] yから各要素iについてi番目の2dから対応する要素を取りたいテンソル。 この例では、出力は[2,3,6]でなければなりません。私はいくつかの技術を試しましたが、成功しませんテンソルフローで簡単に行う方法はありますか?Tensorflowは、別のプレースホルダに応じてプレースホルダから要素を取得します。

答えて

0

使用tf.gather_ndまたはtf.stacktf.whereして手動でハックいずれかありがとう:

import tensorflow as tf 

x = tf.convert_to_tensor([[1, 2], [3, 4], [5, 6]]) 
y = tf.convert_to_tensor([1, 0, 1]) 

with tf.Session() as sess: 
    xx = tf.unstack(x, axis=1) 
    ans = tf.where(tf.equal(y, tf.zeros_like(y)), xx[0], xx[1]) 
    print sess.run(ans) 


with tf.Session() as sess: 
    idx = tf.range(0, limit=3, delta=1, name='arange') 
    idx = tf.stack([idx, y], axis=-1) 
    ans = tf.gather_nd(x, idx) 
    print sess.run(ans) 
関連する問題