首页 文章

用另一个张量索引张量

提问于
浏览
1

我有一个形状 (?, 20, 10) 的张量 xi 和另一个形状 (?, 20, 1) 的张量 y_data . 我想使用 y_data 张量"index" xi 张量来做 tf.exp(xi[y_data] - tf.log(tf.reduce_sum(xi, axis=2)) 之类的事情 .

例如 . tf.exp(xi[:, :, 4] - tf.log(tf.reduce_sum(xi, axis=2))) 导致形状张量 (?, 20) . 我只想得到指数,这里是4,不是另一个张量 .

提前致谢!

1 回答

  • 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))
    

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

相关问题