【发布时间】:2021-03-11 16:00:37
【问题描述】:
我有两个 3D 张量,我想使用一个前 k 个索引获得另一个前 k 个。
例如对于以下张量
a = torch.tensor([[[1], [2], [3]],
[[4], [5], [6]]])
b = torch.tensor([[[7,1], [8,2], [9,3]],
[[10,4],[11,5],[12,6]]])
pytorch 的 topk 函数会给我以下。
top_tensor, indices = torch.topk(a, 2, dim=1)
# top_tensor: tensor([[[3], [2]],
# [[6], [5]]])
# indices: tensor([[[2], [1]],
# [[2], [1]]])
但是我想使用a的结果,映射到b。
# use indices to do something for b, get torch.tensor([[[8,2], [9,3]],
# [[11,5],[12,6]]])
在这种情况下,我不知道b的真实值,所以我不能使用topk来b。
另一方面,我想得到一个函数 foo_slice,如下所示:
top_tensor, indices = torch.topk(a, 2, dim=1)
# top_tensor == foo_slice(a, indices)
有什么方法可以使用 pytorch 实现这一点吗?
谢谢!
【问题讨论】: