我有一个python函数,它需要一堆(1或2),并返回一个二维数组。我一直在尝试使用scipy
curve_fit
和least_squares
来优化输入参数,以便得到的二维数组与另一个预先制作的二维数组相匹配。我遇到了两种方法都返回我的初始猜测作为收敛解的问题。在扯掉我头上的头发后,我发现问题在于,由于它对初始猜测值的增量太小,无法对函数返回的2D数组产生任何影响(因为阵列中的单元值被量化并且不连续),因此scipy
假定其已经达到收敛(或局部最小值)。
我想知道是否有办法绕过这个问题(比如在猜测时强制它使用更大的增量)。谢谢。
1条答案
按热度按时间1hdlvixo1#
我最近遇到了一个非常类似的问题,结果发现这类优化器只对连续可微函数有效。这就是为什么它们会返回初始参数,因为你想拟合的函数不能被微分。在我的例子中,我可以手动使我的拟合函数可微分,首先拟合一个多项式函数,然后将它插入
curve_fit
优化器。