PyTorch 稀疏张量的维数必须为 nDimI + nDimV
PyTorch Sparse Tensors number of dimensions must be nDimI + nDimV
我正在尝试将值插入 gd
以协调 [1,0]
。下面是矩阵。当我尝试这个时,我得到一个 RuntimeError。
>>> import torch
>>> cd = [[1, 0]]
>>> gd = [0.39613232016563416]
>>> i = torch.LongTensor(cd)
>>> v = torch.FloatTensor(gd)
>>> p = torch.rand(2)
>>> i
1 0
[torch.LongTensor of size 1x2]
>>> v
0.3961
[torch.FloatTensor of size 1]
>>> p
0.4678
0.0996
[torch.FloatTensor of size 2]
>>> torch.sparse.FloatTensor(i.t(), v, torch.Size(list(p.size()))).to_dense()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: invalid argument 2: number of dimensions must be nDimI + nDimV at /Users/soumith/code/builder/wheel/pytorch-src/torch/lib/THS/generic/THSTensor.c:169
两件事。
1) 现在 p
是 1 阶张量。要在位置 [1,0]
插入一些东西,它需要是 2 阶张量。
2) 你不需要用稀疏张量做复杂的事情。只需 p[cd[0], cd[1]] = v[0]
就可以了。其中 cd = torch.LongTensor([row_idx, col_idx])
所以:
>>> cd = torch.LongTensor([1,0])
>>> gd = [0.39613232016563416]
>>> v = torch.FloatTensor(gd)
>>> p = torch.rand((2,2))
>>> p
0.9342 0.8539
0.7044 0.0823
[torch.FloatTensor of size 2x2]
>>> p[cd[0], cd[1]] = v[0]
>>> p
0.9342 0.8539
0.3961 0.0823
[torch.FloatTensor of size 2x2]
就这么简单。
我正在尝试将值插入 gd
以协调 [1,0]
。下面是矩阵。当我尝试这个时,我得到一个 RuntimeError。
>>> import torch
>>> cd = [[1, 0]]
>>> gd = [0.39613232016563416]
>>> i = torch.LongTensor(cd)
>>> v = torch.FloatTensor(gd)
>>> p = torch.rand(2)
>>> i
1 0
[torch.LongTensor of size 1x2]
>>> v
0.3961
[torch.FloatTensor of size 1]
>>> p
0.4678
0.0996
[torch.FloatTensor of size 2]
>>> torch.sparse.FloatTensor(i.t(), v, torch.Size(list(p.size()))).to_dense()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: invalid argument 2: number of dimensions must be nDimI + nDimV at /Users/soumith/code/builder/wheel/pytorch-src/torch/lib/THS/generic/THSTensor.c:169
两件事。
1) 现在 p
是 1 阶张量。要在位置 [1,0]
插入一些东西,它需要是 2 阶张量。
2) 你不需要用稀疏张量做复杂的事情。只需 p[cd[0], cd[1]] = v[0]
就可以了。其中 cd = torch.LongTensor([row_idx, col_idx])
所以:
>>> cd = torch.LongTensor([1,0])
>>> gd = [0.39613232016563416]
>>> v = torch.FloatTensor(gd)
>>> p = torch.rand((2,2))
>>> p
0.9342 0.8539 0.7044 0.0823
[torch.FloatTensor of size 2x2]
>>> p[cd[0], cd[1]] = v[0]
>>> p
0.9342 0.8539 0.3961 0.0823
[torch.FloatTensor of size 2x2]
就这么简单。