pytorch 张量改变维度来计算相邻值

pytorch tensor change dimensionallity to count adjacent values

我的 objective 它用于计算张量的所有相邻唯一值 x
假设我的张量是(x 看起来像一个列表,但它是一个 pytorch 张量)

x = [1,2,1,2,4,5]

我希望我的输出是:

[1,2] = 2
[2,1] = 1
[2,4] = 1
[4,5] = 1

我考虑过将张量的维数更改为:

x = [[1,2],[2,1],[1,2],[2,4],[4,5]]

使用 tensor.view 但找不到适用于任何长度张量的解决方案。 如果这是最好的方法,有什么想法吗?是否有一些内置功能?

As @ihdv showed, you can stack shifted views of x with torch.stack or torch.vstack 以获得具有重叠 windows.

的张量对
>>> p = torch.vstack((x[:-1], x[1:]))
tensor([[1., 2., 1., 2., 4.],
        [2., 1., 2., 4., 5.]])

然后你可以在上面应用torch.unique得到统计数据:

>>> p.unique(dim=1, return_counts=True)
(tensor([[1., 2., 2., 4.],
         [2., 1., 4., 5.]]), tensor([2, 1, 1, 1]))