我生成一个稀疏矩阵:
A = torch.sparse_coo_tensor(np.transpose(IJ),V)
其中
IJ
是 ij 索引的 n
-by-2
列表,V
是参数的一维向量。
然后我尝试反向传播一个简单的损失:
loss = A[0,0]**2
loss.backward()
这会导致错误
Function SelectBackward0 returned an invalid gradient at index 0 - expected layout Sparse but got Strided
因为这似乎是可以在稀疏张量上定义的最基本的损失,我是否理解 pytorch 不支持稀疏张量的优化?或者我的代码中还有其他地方我应该看吗?