我的形状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,而不是另一个张量。
提前致谢!
答案 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))
可能不是最有效的,但这是我能想到的唯一方式。