稀疏矩阵导致分割故障退出代码139



使用稀疏矩阵时,它突然杀死了内核和退出代码139。与Gensim一起使用稀疏矩阵格式时发生的。

当将矩阵乘另一个矩阵,甚至使用matrix.sum()时,故障会发生。

使用scipy创建矩阵:

matrix = scipy.sparse.csc_matrix((data, indices, indptr), shape=(num_terms, num_docs), dtype=dtype)

结果,矩阵(num_terms)的形状与最大(索引)不匹配,这会导致numpy对内存地址做出错误的假设。

如果我们称呼:

创建矩阵后,可以很容易地避免这种情况
matrix.check_format()

对矩阵进行了一些理智检查。如果使用Gensim,只需使用高num_features即可。只要不低于实际数字,它不必是您的实际功能数量。

编辑以获取更多详细信息:

使用Gensim,您可能正在使用以下方式进行文档相似性。

sim_method = gensim.similarities.SparseMatrixSimilarity(documents, num_features=max_index)

如果"文档"包含比max_index更高的ID,则会导致错误。

Gensim简单地包装Scipy稀疏矩阵对象。在其上调用check_format使用:

sim_method.index.check_format()

当您尝试在另一个文档语料库上使用这种相似性分数时,可能会发生更可能发生错误。

sim_method[query_documents]

再次,如果query_documents包含的ID高于创建sim方法时给出的max_index - 它将导致错误。

在这里,Gensim完全隐藏了Scipy矩阵,因此您无法直接致电check_format,您只需要检查自己的输入并确保那里没有错误。

相关内容

  • 没有找到相关文章