【发布时间】:2019-09-07 11:03:36
【问题描述】:
我有一个尺寸为[BxLxD] 的3D 张量M 和一个尺寸为[B,1] 的一维张量idx,其中包含(0, L-1) 范围内的列索引。我想创建一个维度为[BxD] 的二维张量N,使得N[i,j] = M[i, idx[i], j]。如何有效地做到这一点?
例子:
B,L,D = 2,4,2
M = torch.rand(B,L,D)
>
tensor([[[0.0612, 0.7385],
[0.7675, 0.3444],
[0.9129, 0.7601],
[0.0567, 0.5602]],
[[0.5450, 0.3749],
[0.4212, 0.9243],
[0.1965, 0.9654],
[0.7230, 0.6295]]])
idx = torch.randint(0, L, size = (B,))
>
tensor([3, 0])
N = get_N(M, idx)
Expected output:
>
tensor([[0.0567, 0.5602],
[0.5450, 0.3749]])
谢谢。
【问题讨论】:
-
如果您觉得我的回答有用,请考虑接受。如果您发现它不起作用,请告诉我出了什么问题。 :)