gpt4 book ai didi

python - csr_matrix 的点积导致段错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:42 24 4
gpt4 key购买 nike

我有两个(scipy)CSR 稀疏矩阵:

A (12414693, 235470)
B (235470, 48063)

执行:

A.dot(B)

导致段错误。

我做错了什么?

编辑

我已经向 scipy 开发者社区提交了一个错误: https://github.com/scipy/scipy/issues/3212

最佳答案

您的问题很可能是由存储在 int32 中的索引溢出引起的,这是由于您的点积具有超过 2^31 个非零条目的结果。尝试以下...

>>> import scipy.sparse
>>> c = np.empty_like(A.indptr)
>>> scipy.sparse.sparsetools.csr_matmat_pass1(A.shape[0], B.shape[1], A.indptr,
A.indices, B.indptr, B.indices, c)
>>> np.all(np.diff(c) >= 0)

对于您的数据,数组 c 是一个包含 12414693 + 1 项的向量,在您的两个项的乘积中保存每行非零项的累积数量矩阵,即如果 C = A.dot(B) 成功完成,它就是 C.indptr 的样子。它是 np.int32 类型,即使在 64 位平台上也不好。如果你的稀疏矩阵太大,就会发生溢出,最后一行将返回 False,并且存储矩阵乘积结果的数组将以错误的大小(最后一项)实例化c,如果确实发生溢出,它很可能是负数)。如果是这种情况,那么是的,提交错误报告...

关于python - csr_matrix 的点积导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093729/

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