如何解决生物对齐(VALIS)中的numpy SVD不收敛错误?
生物对齐时SVD未收敛错误的解决办法
错误内容
raise LinAlgError("SVD did not converge")
numpy.linalg.LinAlgError: SVD did not converge
简单可行的解决步骤
- 先查输入图像
- 别用全黑、全白或大部分区域无有效内容的图像,这类图会让SVD算不出有效结果
- 确认所有待对齐的图像分辨率一致,分辨率差太多容易出问题
- 调VALIS的参数
- 降低特征点检测的阈值,少找一些特征点,避免噪声干扰计算
- 开启VALIS的鲁棒对齐模式(如果有这个选项),让程序自动跳过异常数据点
- 预处理图像
- 给图像加一点对比度,让生物特征更清晰
- 裁掉图像边缘的空白边框,只保留有效区域
- 换numpy版本试试
既然没法降到更低版本,试试安装numpy==1.24.3,这个版本和Python3.9适配性好,SVD稳定性也不错,执行命令:pip install numpy==1.24.3 --force-reinstall
定位错误的小技巧
要是不知道哪个模块触发的错误,在代码最开头加两行:
import numpy as np np.seterr(all='raise')
这样能精准找到出错的代码行,方便针对性调整
内容的提问来源于stack exchange,提问作者snack
相关产品推荐
相关产品推荐

