scipy.optimize.least_squares确定性吗?

时间:2016-06-18 14:40:21

标签: deterministic

我正在使用scipy的{​​{1}}算法设置初始条件,并且总是在我的计算机上得到相同的结果,但是如果我在任何其他计算机上尝试这个(所有计算机都使用最新的Scipy,Python,和颠簸的包和相同的64位Ubuntu Linux),我在每台PC上得到不同的结果。这是为什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

答案是肯定的。

正如您在document上找到的, 在optimize.least_squares;

上实施了3种方法
  1. 信任区域反射算法
  2. 具有矩形信任区域的狗腿洞算法
  3. Levenberg-Marquardt算法
  4. 所有这些都是迭代方法,从初始值(或向量)开始,逐步进入最小值。如何确定此步骤与方法不同,但在所有方法中都是确定性的 有关更多详细信息,请阅读此函数的开发人员撰写的this blog

    我不确定为什么你会在每部电脑上得到不同的结果,抱歉。

答案 1 :(得分:0)

默认情况下(如果为diff_step=Noneoptimize.least_squares使用机器相关的步长作为有限差分近似[1]。对于特定计算机,结果应该是确定性的,但在另一台计算机上可能会有所不同。

除非存在其他与机器相关的参数,否则手动设置diff_step应该在不同的机器上产生相同的结果。

[1]参见scipy documentation