小编use*_*994的帖子

如何在scipy.optimize函数上强制执行更大的步骤?

我有一个compare_images(k, a, b)比较两个2d阵列ab

在funcion里面,我应用gaussian_filtersigma=ka我的想法是估计有多少我一定要平滑图像a,以便它是类似于图片b

问题是我的函数compare_images只会在k变量结束时返回不同的值0.5,如果我这样做fmin(compare_images, init_guess, (a, b),通常会遇到这个init_guess值.

我相信问题是fmin(和minimize)倾向于从非常小的步骤开始,在我的情况下将重现完全相同的返回值compare_images,因此该方法认为它已经找到了最小值.它只会尝试几次.

有没有办法强制fmin或任何其他最小化功能scipy来采取更大的步骤?或者有更适合我需要的方法吗?

编辑: 我找到了一个临时解决方案.首先,按照建议,我使用xtol=0.5和更高作为参数fmin.即便如此,我仍然有一些问题,有几次fmin会回来init_guess.然后我创建了一个简单的循环,如果fmin == init_guess,我会生成另一个,随机init_guess并再次尝试.

当然,这很慢,但现在我开始运行了.为我的所有数据运行它需要20小时左右,但我不需要再做一次.

无论如何,为那些仍然有兴趣找到更好的解决方案的人更好地解释问题:

  • 我有2张图片,A并且B包含一些科学数据.
  • A 看起来像一些具有可变值的点(它是一个矩阵,其中每个有价值的点代表事件发生的位置和强度)
  • B 看起来像一个平滑的热图(它是观察到的密度)
  • B看起来就像你应用高斯滤波器一样A的半随机噪声.
  • 我们正在接近B通过应用高斯滤波器常数sigma来 …

python optimization numpy gaussian scipy

8
推荐指数
1
解决办法
2788
查看次数

标签 统计

gaussian ×1

numpy ×1

optimization ×1

python ×1

scipy ×1