- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一些代码可以使理论预测与实验数据相吻合,我想运行 LMA(Levenberg-Marquardt 算法)以使理论与实验相吻合。然而,计算是非常重要的,每个模型在单个处理器上需要大约 10-30 分钟的时间来计算,但是这个问题是可并行化的,并且代码当前设置为将(单次迭代的)不同组件提交给集群计算机(这个计算仍然需要大约 1-2 分钟)。
现在这个提交脚本是在 python 中的一个可调用函数中设置的——所以用 scipy LMA (scipy.optimise.leastsq) 设置它是相对微不足道的——但是我想,scipy LMA 会通过每个人连续计算(用于测量梯度),然后等待返回,而我更喜欢 LMA 一次发送一整套计算,然后等待返回。 python 提交脚本看起来有点像:
def submission_script(number_iterations,number_parameters,value_parameters):
fitness_parameter = [0]*number_iterations
<fun stuff>
return (fitness_parameter)
其中“value_parameters”是维度[number_iterations][number_parameters]的嵌套列表,其中包含要为每个模型计算的变量,“number_parameters”是要拟合的参数数量,“number_iterations”是要计算的模型数量(因此每一步,为了衡量梯度,LMA 计算 2*number_parameters 个模型),“fitness_parameter”是必须最小化的值(并且具有维度 [iterations])。
现在,显然,我可以编写自己的 LMA,但这有点重新发明轮子 - 我想知道是否有任何东西可以满足我的需求(或者 scipy LMA 是否可以用于此方式)。
Gauss-Newton 算法应该也有效,因为起点应该接近最小值。限制拟合的能力(即为拟合参数设置最大值和最小值)会很好,但不是必需的。
最佳答案
scipy.optimize.leastsq 函数让您有机会提供一个函数 J
来评估给定参数向量的雅可比矩阵。您可以实现多处理解决方案来计算此矩阵,而不是让 scipy.optimize.leastsq 通过连续调用您的函数 f
来近似它。
不幸的是,scipy 中的 LMA 实现对 f
和 J
使用了单独的函数。您可能希望缓存在 f
中计算的信息,以便在使用相同参数 vecor 调用时在 J
中重用它。或者,您可以实现自己的 LMA 版本,该版本使用单个 fJ
调用。
关于Python:Levenberg Marquardt 算法并行化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158461/
我正在使用 Levenberg-Marquardt algorithm最小化 6 个参数的非线性函数。每次最小化我有大约 50 个数据点,但我没有得到足够准确的结果。我的参数彼此相差几个数量级这一事实
我有一些代码可以使理论预测与实验数据相吻合,我想运行 LMA(Levenberg-Marquardt 算法)以使理论与实验相吻合。然而,计算是非常重要的,每个模型在单个处理器上需要大约 10-30 分
我是一名程序员,想了解 Levenberg–Marquardt 曲线拟合算法的工作原理,以便自己实现。是否有任何好的教程可以详细解释它是如何与作为程序员而不是数学家的读者一起工作的。 我的目标是在 o
问题:我最近的任务是设计一个非线性求解器,但我的求解器没有收敛到正确的解。 **预期**:“最小化(x)”方法应该将我的参数 vector x 减少到最小值。 观察到:在我调用“最小化(x)”之后,我
我尝试基于 Numerical Optimization using the Levenberg-Marquardt Algorithm 在 Julia 上实现用于求解非线性方程的 levenberg
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我通常使用 MATLAB 编写代码,但出于某些原因我决定改用 JAVA 方法。 问题很简单:我想了解如何将以下 MATLAB 代码转换为有效的 JAVA 代码。 在 MATLAB 中,我有一个名为 f
我能够使用 peak-o-mat 将曲线拟合到 x/y 数据集, 如下所示。那是线性背景和 10 条洛伦兹曲线。 因为我需要拟合许多相似的曲线,所以我使用 mpfit.py 编写了一个脚本化的拟合例程
我正在将 Matlab 中使用 Levenberg-Marquardt 训练算法的神经网络代码移植到 Python。我正在使用 Neurolab,我相信 Levenberg-Marquardt 训练算
我正在尝试使用 Matlab 中的 levenberg-Marquardt 最小二乘法将具有四个未知参数的巨大函数拟合到我的数据中。我使用了这个命令: [x, resnorm]=lsqcurvefit
我有一个关于如何在 Python 中使用 Levenberg-Marquardt 优化方法的问题。 SCIPY库里有很多optimization methods . 我尝试了两种方法(Nelder-M
我正在尝试将 Levenberg-Marquardt 算法实现为 Keras 优化器,如所述 here但我有几个问题,最大的一个是这个错误 TypeError: Tensor objects are
我正在尝试用 Java 编写 levenberg marquardt,这是我的代码: while (iter <= 10 || mse < 0.0001) { call.cal
我成功地使用了 Eigen 的 Levenberg-Marquart 类,示例来自:http://techblog.rga.com/determining-indoor-position-using-
我正在尝试最小化以下示例函数: F(x) = f[0]^2(x[0],...,x[n-1]) + ... + f[m-1]^2(x[0],...,x[n-1]) 最小化这种函数的一般方法是 Leven
在相机校准中,我使用 calibrateCamera() 从校准图案的多个 View 中查找相机参数。它恰恰做了两件事: 1) 假设镜头畸变为零,估计封闭形式的初始相机参数。 2) 运行全局 Leve
我正在尝试根据 Manolis Lourakis ( Available here) ) 用 C 语言编写的 Levenberg-Marquardt 算法构建 mex 文件。我已经做了很多搜索,但还没
我在最小化 python 中的复杂非线性函数时遇到了麻烦。该函数实际上是用于拟合实验数据的拟合模型的卡方。为了获得全局最小值,我使用 scipy 中的 basshopping 函数。该函数是 mini
我正在使用 Matlab 中的 lsqcurvefit 函数对一些实验数据进行建模。数据采用特定形状,因此算法只是调整该形状的系数以改变其振幅等。 该模型运行良好并且拟合良好(我计算了卡方)。 Lev
我是一名优秀的程序员,十分优秀!