快速计算超大矩阵的eigenvalues的方法 java_如何计算非常大的scipy稀疏矩阵之间的Dot积...

我试图在巨大的矩阵和它自己之间找到点积 .

矩阵的形状(371744,36154)NonZero的数字 - 577731 [非常稀疏]

mat1是scipy.sparse.csr_matrix如果我使用 mat1 * mat1.T 我得到一个值错误,这看起来像它,因为在结果矩阵中有太多的非零元素,并且索引指针根据here溢出

dp_data = data_m * data_m.T

File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 247, in __mul__

return self._mul_sparse_matrix(other)

File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 300, in _mul_sparse_matrix

return self.tocsr()._mul_sparse_matrix(other)

File "/usr/lib/python2.7/dist-packages/scipy/sparse/compressed.py", line 290, in _mul_sparse_matrix

indices = np.empty(nnz, dtype=np.intc)

ValueError: negative dimensions are not allowed

我也试过 np.dot

但doc说,

"As of NumPy 1.7, np.dot is not aware of sparse matrices, therefore using it will result on unexpected results or errors. The corresponding dense matrix should be obtained first instead"

当我到mat1.toarray()或todense()时,我得到一个内存错误,因为矩阵是巨大的!我有16GB的内存!该程序似乎适用于较小的输入!

data_array = data_m.toarray()

File "/usr/lib/python2.7/dist-packages/scipy/sparse/compressed.py", line 550, in toarray

return self.tocoo(copy=False).toarray()

File "/usr/lib/python2.7/dist-packages/scipy/sparse/coo.py", line 219, in toarray

B = np.zeros(self.shape, dtype=self.dtype)

MemoryError

我正在使用Numpy版本1.8.1 Numpy版本0.9.0

我怎么做这个乘法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值