gather op不可像torch.gather一样指定dim参数
Created by: jb892
- 版本、环境信息: 1)PaddlePaddle版本:1.8 2)CPU/GPU:CUDA 10.1 和cuDNN 7.6.5 3)系统环境:Ubuntu 16.04 LTS 4)Python版本号:3.7.0 5)显存信息: 8GB 注:您可以通过执行summary_env.py获取以上信息。
- 问题描述: 我在使用gather op过程中发现其实现跟torch.gather不一样,不可以指定dim=1,可以提供Work around吗?具体的出现问题的测试代码可以参考如下:
def test_gather_op():
BATCH_SIZE = 2
gpu = fluid.CUDAPlace(0)
x = fluid.data(name='x', shape=(None, 2, 3), dtype='float32')
idx = fluid.data(name='idx', shape=(None, 10, 3), dtype='int64')
x_val = np.random.rand(BATCH_SIZE, 2, 3).astype(np.float32)
idx_val = np.random.randint(2, size=[BATCH_SIZE, 10, 3]).astype(np.int64)
print(x_val)
print(idx_val)
# tmp = []
# for i in range(BATCH_SIZE):
# tmp.append(layers.gather(x[i], idx[i]))
# result = layers.concat(tmp, axis=0)
result = layers.gather(x, idx)
exe = fluid.Executor(gpu)
exe.run(fluid.default_startup_program())
out = exe.run(
feed={'x': x_val, 'idx': idx_val},
fetch_list=[result]
)
print(out)