gpt4 book ai didi

python - 计算巨大稀疏矩阵的点积时出现 MemoryError

转载 作者:行者123 更新时间:2023-12-05 08:07:36 27 4
gpt4 key购买 nike

假设以下情况:我得到了一个双模网络的邻接矩阵,其中一个维度代表一些项目(帖子)和每个项目下出现的其他标签。现在我想折叠那个双模式网络以获得一个单模式网络的项目到项目关系,其中每个链接的值代表两个项目的共享标签的数量。这可以通过如下简单的矩阵乘法来实现:

enter image description here

或在代码中:

from scipy.sparse import csr_matrix, save_npz, load_npz

# load matrix
tpm = csr_matrix(load_npz('tag_post_matrix.npz'))

# compute dot product
cn = tpm.transpose().dot(tpm)

# save result
save_npz('content_network_abs.npz', cn)

运行一段时间后出现这个错误:

---------------------------------------------------------------------------
MemoryError Traceback (most recent call last)
<ipython-input-27-10ff98c2505a> in <module>()
----> 1 cn = tpm.transpose().dot(tpm)
2 save_npz(expand('content_network_abs.npz'), cn)
3

/opt/anaconda/lib/python3.7/site-packages/scipy/sparse/base.py in dot(self, other)
359
360 """
--> 361 return self * other
362
363 def power(self, n, dtype=None):

/opt/anaconda/lib/python3.7/site-packages/scipy/sparse/base.py in __mul__(self, other)
477 if self.shape[1] != other.shape[0]:
478 raise ValueError('dimension mismatch')
--> 479 return self._mul_sparse_matrix(other)
480
481 # If it's a list or whatever, treat it like a matrix

/opt/anaconda/lib/python3.7/site-packages/scipy/sparse/compressed.py in _mul_sparse_matrix(self, other)
500 maxval=nnz)
501 indptr = np.asarray(indptr, dtype=idx_dtype)
--> 502 indices = np.empty(nnz, dtype=idx_dtype)
503 data = np.empty(nnz, dtype=upcast(self.dtype, other.dtype))
504

MemoryError:

我在执行过程中监控了 RAM,没有任何异常观察(我有足够的内存:~1TB)。

初始矩阵有大约 24000000 个非零条目(非常稀疏),我希望生成的矩阵也非常稀疏。

我对主题有普遍的误解还是代码中某处存在错误?

提前致谢!

最佳答案

尝试增加虚拟内存。 1.5 倍的额外 VM 对我来说效果更好。

关于python - 计算巨大稀疏矩阵的点积时出现 MemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54526474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com