【发布时间】:2022-10-23 05:37:26
【问题描述】:
我提前为我的 pytorch 基础知识道歉,但是这个问题困扰了我一段时间。
假设我有一个形状为 (8,8,1) 的火炬张量 u,例如
u = tensor([[0.0000, 0.1429, 0.2857, 0.4286, 0.5714, 0.7143, 0.8571, 1.0000],
[0.0000, 0.1429, 0.2886, 0.4470, 0.5896, 0.7171, 0.8571, 1.0000],
[0.0000, 0.1446, 0.3182, 0.4934, 0.6302, 0.7424, 0.8588, 1.0000],
[0.0000, 0.1470, 0.3154, 0.4734, 0.5974, 0.7258, 0.8603, 1.0000],
[0.0000, 0.1397, 0.2742, 0.4026, 0.5266, 0.6846, 0.8530, 1.0000],
[0.0000, 0.1412, 0.2576, 0.3698, 0.5066, 0.6818, 0.8554, 1.0000],
[0.0000, 0.1429, 0.2829, 0.4104, 0.5530, 0.7114, 0.8571, 1.0000],
[0.0000, 0.1429, 0.2857, 0.4286, 0.5714, 0.7143, 0.8571, 1.0000]])
以及我感兴趣的 u 索引的大小 (2,8,8) 的张量
indices = tensor(
[[[0, 0, 0, 0, 0, 1, 0, 2],
[0, 3, 0, 4, 0, 5, 0, 5],
[0, 0, 0, 0, 0, 1, 0, 2],
[0, 3, 0, 4, 0, 5, 0, 5],
[1, 0, 0, 0, 0, 1, 0, 2],
[1, 3, 1, 4, 1, 5, 1, 5],
[2, 0, 1, 0, 1, 1, 1, 2],
[2, 3, 2, 4, 2, 5, 2, 5]],
[[3, 0, 2, 0, 2, 0, 2, 1],
[3, 2, 3, 3, 3, 4, 3, 5],
[4, 0, 3, 0, 3, 0, 3, 1],
[4, 2, 4, 3, 4, 4, 4, 5],
[5, 0, 5, 0, 4, 0, 4, 1],
[5, 2, 5, 3, 5, 5, 5, 5],
[5, 0, 5, 0, 5, 1, 5, 2],
[5, 3, 5, 4, 5, 5, 5, 5]]])
我想要一个与 u 大小相同的火炬张量结果,但在 result[i][j] = u[indices[0][i][j],indices[1][i][j] 的位置(例如:result[0][0] = u[0][3], result[0][1] = u[3][0], result[4][5] = u[5][0]...)
我尝试使用 torch.gather 但我根本无法让它工作,我尝试更改张量的 .view 但我无法匹配尺寸。有没有办法做到这一点?
【问题讨论】:
标签: pytorch tensor torch indices