Rom*_*man 9 python coredump scikit-learn
我尝试在scikit-learn中运行一个简单的线性拟合:
from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
Run Code Online (Sandbox Code Playgroud)
结果我得到:
Illegal instruction (core dumped)
Run Code Online (Sandbox Code Playgroud)
有谁知道这个问题的原因是什么以及如何解决问题?
PS我使用的0.16.1是scikit-learn 的版本.但我也有旧版本的问题.我是在Ubuntu下做的.
添加
今天我尝试了另一个估算器(KernelRidge),我收到了同样的错误信息.我想几个月前我试图用scipy解决一个线性方程组,我有同样的错误.我需要补充一点,我尝试过的示例总是很小(因此,问题的大小不应该是错误的原因).在其他计算机上(在工作中)我也有Ubunutu并使用scikit-learn而我没有他们的这个问题.所以,看起来我家用笔记本电脑有问题.
在这里冒险,但是您的笔记本电脑有可能配备 AMD CPU 吗?
AMD 已取消对 3DNow! 的支持!来自最新处理器的指令(来源),对 Ubuntu和Debian bugtrackers 的搜索显示,许多人都受到了影响(例如1、2、3、4、5 )。
Scikit-learn 构建在 numpy 之上,而 numpy 又使用 OpenBLAS 或 Atlas 等库在计算机的特定硬件上尽可能高效地执行计算。
然而,为 Debian 和 Ubuntu 编译的默认版本针对较旧的 CPU,基于未来的处理器将能够执行较旧处理器的代码,但反过来通常情况并非如此。
然而,在这种情况下,较新的 AMD CPU 已删除了指令,因此Illegal instruction尽管有有效的 python 代码,您也会收到错误,因为底层库正在尝试使用不再存在的旧指令。
如果发生这种情况,那么解决方法是为笔记本电脑中的实际处理器构建 numpy 和 OpenBLAS,而不是 Debian 附带的通用处理器。尽管此示例适用于 Ubuntu,但https://hunseblog.wordpress.com/2014/09/15/installing-numpy-and-openblas/给出的说明对于 Debian 来说应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |