scipy.optimize.least_squares是确定性的吗?

3
我正在使用scipyoptimize.least_squares算法,设置了初始条件并在我的电脑上始终得到相同的结果。但是,如果我在任何其他计算机上尝试(所有计算机都配备了最新的Scipy、Python和bumpy软件包以及相同的64位Ubuntu Linux),每台计算机都会得到不同的结果。为什么会这样呢?
谢谢。

1
你最终找出原因了吗? - jamesoh
2个回答

2
默认情况下(如果diff_step=None),optimize.least_squares在有限差分逼近中使用一个机器相关的步长[1]。对于特定的计算机,结果应该是确定性的,但在另一台计算机上可能会不同。
除非有其他机器相关的参数,否则手动设置diff_step应该在不同的计算机上产生相同的结果。
[1] 请参见scipy文档

1
答案是肯定的。
正如您可以在文档中找到的那样,optimize.least_squares实现了3种方法;
  1. 信赖域反射算法
  2. 矩形信任区域的dogleg算法
  3. Levenberg-Marquardt算法
所有这些都是迭代方法,从初始值(或向量)开始,逐步到达最小值。如何确定此步骤因方法而异,但在所有方法中都是确定性的。
有关更多详细信息,请阅读由该功能的开发人员编写的此博客
很抱歉我不知道为什么您在每台计算机上得到不同的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接