【发布时间】:2019-02-07 08:09:04
【问题描述】:
我有一个形状为 (16, 4096, 3) 的张量。我有另一个形状指数的张量(16, 32768, 3)。我正在尝试沿dim=1 收集值。这最初是在 pytorch 中使用 gather function 完成的,如下所示-
# a.shape (16L, 4096L, 3L)
# idx.shape (16L, 32768L, 3L)
b = a.gather(1, idx)
# b.shape (16L, 32768L, 3L)
请注意输出b的大小与idx的大小相同。但是,当我应用 tensorflow 的 gather 函数时,我得到了完全不同的输出。发现输出维度不匹配,如下图-
b = tf.gather(a, idx, axis=1)
# b.shape (16, 16, 32768, 3, 3)
我也尝试过使用tf.gather_nd,但没有成功。见下文-
b = tf.gather_nd(a, idx)
# b.shape (16, 32768)
为什么我会得到不同形状的张量? 我想得到和pytorch计算的形状一样的张量。
换句话说,我想知道torch.gather的tensorflow等价物。
【问题讨论】:
-
有什么建议吗?
标签: python tensorflow pytorch