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]))
我的 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]))