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

 淡漠初夏0_176 发布于 2023-02-11 20:27

我有一个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通过应用高斯滤波器常数sigmaA.这sigma是在视觉上选择的,但仅适用于某类图像.

我正在尝试sigma为每个图像获得最佳,所以稍后我可以找到一些关系,sigma并在每个图像中显示事件类.

无论如何,谢谢你的帮助!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有