我正在尝试在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
答案 0 :(得分:1)
两件事。
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,大小为2x2]
>>> p[cd[0], cd[1]] = v[0]
>>> p
0.9342 0.8539 0.3961 0.0823
[torch.FloatTensor,大小为2x2]
那很简单。