【问题标题】:Is scipy.optimize.least_squares deterministic?scipy.optimize.least_squares 是确定性的吗?
【发布时间】:2016-10-20 06:31:20
【问题描述】:

我正在使用 scipyoptimize.least_squares 算法并设置初始条件,并且始终在我的计算机上获得相同的结果,但是如果我在任何其他计算机上尝试此操作(全部带有最新的 Scipy、Python 和颠簸的包和相同的 64 位 Ubuntu Linux),我在每台 PC 上得到不同的结果。这是为什么呢?

谢谢。

【问题讨论】:

  • 你找到原因了吗?

标签: python scipy deterministic


【解决方案1】:

答案是肯定的。

您可以在document 上找到, optimize.least_squares 上实现了 3 个方法;

  1. 信任区域反射算法
  2. 具有矩形信任区域的 dogleg 算法
  3. Levenberg-Marquardt 算法

所有这些都是迭代方法,从一个初始值(或向量)开始,逐步到达最小值。如何确定这一步因方法而异,但在所有方法中都是确定性的。
更详细的可以阅读这个函数的开发者写的this blog

我不知道为什么你在每台电脑上得到不同的结果,抱歉。

【讨论】:

    【解决方案2】:

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

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

    [1] 见scipy documentation

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多