【发布时间】:2014-04-21 20:47:26
【问题描述】:
我正在使用 scipy 的 spsolve 在 Python 中编写一个程序,以使用稀疏矩阵 (csr_matrix) 求解线性方程。矩阵相当大(M=90826x90826,b=90826x1),很难手动检查。
我遇到的问题是,对于我正在创建的一小部分矩阵,scipy.sparse.linalg.spsolve(M,b) 经历了如此灾难性的失败,以至于整个程序崩溃。即使将行包装在 try/except 中,并将程序本身包装在另一个 try/except 中,也无济于事。我什至没有在异常字段中得到响应。
我手动验证了我发送的数据与我想要的不正确,但我无法在其他任何地方进行检查。我的程序涉及到人脸检测,问题可能是检测不好引起的。在这种情况下,“脸”被发现在实际脸的脸颊上。但是,在继续之前手动验证检测是否正确并不是一个真正的选择(最终产品将由非技术客户使用)。而自动验证不在项目范围内。
无论如何,如果我能检测到矩阵会导致 spsolve 崩溃,那么只需跳过图像就可以了。但我似乎找不到关于如何防止 spsolve 崩溃的文献。
我发送的值是 float64 类型,可以是正数或负数。从我所看到的可以求解的矩阵来看,M 通常由 4 和 -1 填充,而 b 几乎可以是任何正数或负数。
【问题讨论】:
标签: numpy scipy linear-algebra sparse-matrix