В 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]
Последняя строка дает исключение "Плохой срез индекса индекса". Кажется, TensorFlow не поддерживает индексирование, например numpy или Theano.
Кто-нибудь знает, есть ли способ TensorFlow сделать это (индексирование тензора произвольными значениями). Я видел часть tf.nn.embedding, но я не уверен, что они могут быть использованы для этого, и даже если это возможно, это огромное обходное решение для чего-то такого простого.
(Сейчас я загружаю данные из x
в качестве ввода и делаю индексирование в numpy, но я надеялся разместить x
внутри TensorFlow, чтобы получить более высокую эффективность)