TensorFlowでインデックスを作成する方法について基本的な質問があります。
Numpyで:
x = np.asarray([1,2,3,3,2,5,6,7,1,3])
e = np.asarray([0,1,0,1,1,1,0,1])
#numpy
print x * e[x]
私は得ることができます
[1 0 3 3 0 5 0 7 1 3]
TensorFlowでこれを行うにはどうすればよいですか?
x = np.asarray([1,2,3,3,2,5,6,7,1,3])
e = np.asarray([0,1,0,1,1,1,0,1])
x_t = tf.constant(x)
e_t = tf.constant(e)
with tf.Session():
????
ありがとう!
幸いなことに、あなたが尋ねている正確なケースは、TensorFlowで tf.gather()
によってサポートされています。
_result = x_t * tf.gather(e_t, x_t)
with tf.Session() as sess:
print sess.run(result) # ==> 'array([1, 0, 3, 3, 0, 5, 0, 7, 1, 3])'
_
tf.gather()
opは、 NumPyの高度なインデックス付け よりも強力ではありません。0次元のテンソルのスライス全体の抽出のみをサポートします。より一般的なインデックス作成のサポートが要求されており、 このGitHubの問題 で追跡されています。