【问题标题】:Tensorflow: index per rowTensorflow:每行索引
【发布时间】:2016-11-21 14:11:45
【问题描述】:

假设我有一个形状为 (100,20) 的张量。现在我还有一个形状指数的张量(100,)。现在如何获得形状为 (100,) 或 (100,1) 的张量,每行(100 行)正确的值(由索引中的相应索引选择?

小例子: 所以假设张量 A 是

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

张量 B 是

[0,2,1]

然后我想作为输出

[1,6,8]

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    您可以加入具有适当范围的 B 张量以创建二维索引(在您的示例中为 [[0, 0], [1, 2], [2, 1]]),然后使用 tf.gather_nd 提取元素:

    b_2 = tf.expand_dims(b, 1)
    range = tf.expand_dims(tf.range(tf.shape(b)[0]), 1)
    ind = tf.concat(1, [range, b_2])
    res = tf.gather_nd(a, ind)
    

    【讨论】:

    • 感谢这项工作,希望 Tensorflow 在未来的版本中有更好的代码
    • 在为简单示例工作时,当 100 是未知维度时,这不起作用。然后错误是:ValueError:无法将未知维度转换为张量。您对此也有解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多