【发布时间】:2017-04-15 11:58:29
【问题描述】:
下面的代码会导致我的系统在完成之前耗尽内存。
您能否建议一种更有效的方法来计算大型矩阵上的余弦相似度,如下所示?
我希望计算原始矩阵 (mat) 中 65000 行中每一行相对于所有其他行的余弦相似度,以便结果是 65000 x 65000 矩阵,其中每个元素都是余弦相似度在原始矩阵的两行之间。
import numpy as np
from scipy import sparse
from sklearn.metrics.pairwise import cosine_similarity
mat = np.random.rand(65000, 10)
sparse_mat = sparse.csr_matrix(mat)
similarities = cosine_similarity(sparse_mat)
运行最后一行后,我总是用完内存,程序要么冻结,要么崩溃,并出现 MemoryError。无论我是在 8 gb 本地 RAM 上还是在 64 gb EC2 实例上运行,都会发生这种情况。
【问题讨论】:
-
sparse有自己的random函数,可以创建一个有很多零的矩阵。
标签: python numpy memory matrix cosine-similarity