Python 如何在SciPy中加速稀疏矩阵运算?
我使用的矩阵是BSR稀疏矩阵。我需要执行BSR格式的矩阵乘法,并将其添加到密集矩阵中。我想知道有没有更快的方法 我在课堂上做这件事。守则的有关部分如下:Python 如何在SciPy中加速稀疏矩阵运算?,python,numpy,matrix,scipy,Python,Numpy,Matrix,Scipy,我使用的矩阵是BSR稀疏矩阵。我需要执行BSR格式的矩阵乘法,并将其添加到密集矩阵中。我想知道有没有更快的方法 我在课堂上做这件事。守则的有关部分如下: import numpy as np from scipy import sparse Ts = np.zeros((self.Ks*self.D,self.Ks*self.D),dtype="float32") n = data.shape[0] for i in range(n): B = self.W[i]
import numpy as np
from scipy import sparse
Ts = np.zeros((self.Ks*self.D,self.Ks*self.D),dtype="float32")
n = data.shape[0]
for i in range(n):
B = self.W[i] # a CSC sparse matrix
x = self.train_data[i]
s0 = B.T.dot(x)
s0 = s0.reshape(self.D*self.Ks,1)
s0 = sparse.bsr_matrix(s0,blocksize=(self.Ds,1))
Ts += (self.eta-1)*s0@s0.T + B.T@B # This line cost most time
提前感谢您的帮助/建议。您没有告诉我们任何有关形状和稀疏性的信息。注意每行的对象类型和形状可能有助于理解代码。但是
Ts
密集的事实表明它们没有那么大。使用密集数组而不是稀疏矩阵应该更快(除非矩阵是真正稀疏的)。