pytorch稀疏(稀疏张量)在乘法中广播密集形状

pytorch稀疏(稀疏张量)在乘法中广播密集形状,pytorch,broadcast,Pytorch,Broadcast,使用正规张量中的广播,下面的工作 torch.ones(3, 1)*torch.ones(3, 10) 我需要将此行为扩展到稀疏向量,但我不能: i = torch.tensor([[0, 1, 1], [2, 0, 2]]) a = torch.sparse_coo_tensor(i, torch.ones(3, 1), [2, 4, 1]) b = torch.sparse_coo_tensor(i, torch.ones(3, 10), [2, 4,

使用正规张量中的广播,下面的工作

torch.ones(3, 1)*torch.ones(3, 10)
我需要将此行为扩展到稀疏向量,但我不能:

i = torch.tensor([[0, 1, 1],
                  [2, 0, 2]])
a = torch.sparse_coo_tensor(i, torch.ones(3, 1), [2, 4, 1])
b = torch.sparse_coo_tensor(i, torch.ones(3, 10), [2, 4, 10])
a*b
# gives RuntimeError: mul operands have incompatible sizes
为什么这不起作用? 是否有pytorch函数来执行此操作?
如果不是,那么最好的替代算法是什么?

只是为了澄清一下:您是想创建大小分别为
(3,1)
(3,10)
的稀疏张量,还是有意创建大小分别为
(2,4,1)
(2,4,10)
的稀疏张量?请注意,文档中的顺序为。当我用另一种方式做的时候,我仍然有同样的问题,所以它不会影响实际的问题,只是精确的公式。