在pytorch中如何用稀疏矩阵元素乘以稠密矩阵

在pytorch中如何用稀疏矩阵元素乘以稠密矩阵,pytorch,sparse-matrix,Pytorch,Sparse Matrix,我可以使用torch.sparse.mm()或torch.spmm()直接在稀疏矩阵和密集矩阵之间进行乘法,但我应该选择哪个函数进行元素乘法?您可以自己实现这个乘法 def sparse_dense_mul(s, d): i = s._indices() v = s._values() dv = d[i[0,:], i[1,:]] # get values from relevant entries of dense matrix return torch.sparse.Flo

我可以使用
torch.sparse.mm()
torch.spmm()
直接在稀疏矩阵和密集矩阵之间进行乘法,但我应该选择哪个函数进行元素乘法?

您可以自己实现这个乘法

def sparse_dense_mul(s, d):
  i = s._indices()
  v = s._values()
  dv = d[i[0,:], i[1,:]]  # get values from relevant entries of dense matrix
  return torch.sparse.FloatTensor(i, v * dv, s.size())

请注意,由于乘法运算的线性,您不必担心
s
是否合并

你是说像哈达玛产品?