I would like to do the following numpy code in Tensorflow:
input = np.array([[1,2,3]
[4,5,6]
[7,8,9]])
index1 = [0,1,2]
index2 = [2,2,0]
output = input[index1, index2]
>> output
[3,6,7]
given an input such as:
input = tf.constant([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
I have tried the following, but seems like an overshooting:
index3 = tf.range(0, input.get_shape()[0])*input.get_shape()[1] + index2
output = tf.gather(tf.reshape(input, [-1]), index3)
sess = tf.Session()
sess.run(output)
>> [3,6,7]
This works only because my first index is conveniently [0,1,2] but wouldn't be doable for [0,0,2] for example (besides looking really long and ugly).
Would you have any easier syntax, something more tensoric/pythonic?