用另一个张量索引张量

时间:2017-11-27 11:21:54

标签: tensorflow

我的形状xi的张量(?, 20, 10)和形状y_data的另一个张量(?, 20, 1)。我想使用y_data张量到"索引" xi张量,以便执行类似tf.exp(xi[y_data] - tf.log(tf.reduce_sum(xi, axis=2))的操作。

E.g。 tf.exp(xi[:, :, 4] - tf.log(tf.reduce_sum(xi, axis=2)))导致形状张量(?, 20)。我只想得到索引,这里是4,而不是另一个张量。

提前致谢!

1 个答案:

答案 0 :(得分:1)

在这种情况下,我会对y_data的可能值使用一个循环,我将假设从0到9。

result = tf.zeros(tf.shape(y_data), tf.float32)
for i in range(10):
    result = tf.where(tf.equal(y_data, i), tf.exp(xi[:, :, i:i+1]), result)
result = tf.reshape(result, [-1, 20])
result -= tf.log(tf.reduce_sum(xi, axis=2))

可能不是最有效的,但这是我能想到的唯一方式。