相同的 Python 代码,相同的数据,不同机器上的不同结果

Same Python code, same data, different results on different machines

我有一个非常奇怪的问题,我在不同的机器上使用相同的代码和相同的数据得到不同的结果。

我有一个基于 numpy/scipy/sklearn 的 python 代码,我使用 anaconda 作为我的基础 python 分布。即使我将整个项目目录(包括所有数据和代码)从我的主机复制到另一台机器并 运行 它,我得到的结果也是不同的。具体来说,我正在执行分类任务,准确率相差 3%。我在两台机器上使用相同版本的 python 和 anaconda。我的主机是 ubuntu 16.04,它的结果低于我尝试过的其他几台具有各种 OS 的机器(OSX、ubuntu 14.04 和 Centos)。所以,我当前的系统配置应该有问题,因为所有其他机器都显示一致的结果。由于我的 anaconda 版本在所有机器上都是一致的,所以我不知道还有什么问题。任何想法我还应该检查什么或者问题的根源是什么?

我还从头开始删除并重新安装了 anaconda,但它没有帮助。

如果您的代码使用线性代数,请检查它。一般来说,舍入误差不是确定性的,如果你的矩阵条件很差,也可能是这样。

我遇到了类似的问题,我找到了 this discussion。问题可能是 MKL(英特尔数学核心函数库)浮点运算默认为 non-deterministic。所以export MKL_CBWR=AUTO可能会解决问题。