numpy では、次のことができます。
x = np.random.random((10,10))
a = np.random.randint(0,10,5)
b = np.random.randint(0,10,5)
x[a,b] # gives 5 entries from x, indexed according to the corresponding entries in a and b
TensorFlow で同等のものを試すと、次のようになります。
xt = tf.constant(x)
at = tf.constant(a)
bt = tf.constant(b)
xt[at,bt]
最後の行では、「Bad slice index tensor」という例外が発生します。TensorFlow は numpy や Theano のようなインデックス作成をサポートしていないようです。
これを行う TensorFlow の方法があるかどうかは誰にもわかりません (任意の値でテンソルにインデックスを付けます)。tf.nn.embedding 部分を見てきましたが、これに使用できるかどうかはわかりません。使用できたとしても、この簡単なものに対する大きな回避策です。
(現在、データをx
入力としてフィードし、numpy でインデックス作成を行っていますが、x
効率を高めるために TensorFlow 内に配置したいと考えていました)