在张量的某个维度上调用 unique_consecutive()
并用指定值填充左边的最佳方法是什么?
为简单起见,我们可以使用 2D 张量作为示例:
input = tensor([[3, 3, 5, 5, 5],
[3, 3, 2, 2, 3]])
如果指定填充值-1,我希望得到的是:
output = tensor([[3, 5, -1, -1, -1],
[3, 2, 3, -1, -1]])
此外,为了节省内存,如果可能,我更愿意就地进行。 谢谢!
答案 0 :(得分:0)
从 PyTorch 论坛 https://discuss.pytorch.org/t/best-way-to-run-unique-consecutive-on-certain-dimension/112662 找到了一个不错的解决方案,此处引用以供快速参考。
x = tensor([[3, 3, 5, 5, 5],
[3, 3, 2, 2, 3]])
unique_x, indices = torch.unique_consecutive(x, return_inverse=True)
indices -= indices.min(dim=1, keepdims=True)[0]
result = -torch.ones_like(x)
result = result.scatter_(1, indices, x)