微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用与 gtol 不同的条件中断 ```scipy.optimize.fmin_cg```

如何解决使用与 gtol 不同的条件中断 ```scipy.optimize.fmin_cg```

我正在使用 scipy.optimize.fmin_cg 最小化一个函数。我知道函数是正的,(通常)有一个(或多个)最小值为 0,我只对那些最小值感兴趣。 fmin_cg 在梯度范数小于参数 gtol 后停止。相反,如果函数f(x) 小于某个 epsilon,我希望迭代停止。如果不存在或未找到接近 0 的最小值,则允许迭代运行直到 maxiter 被取代。

有没有办法使用 fmin_cg 以在 f(x)<epsilon 而不是 derivative_norm < gtol 时停止迭代?

我尝试将 callback 设置为断言 f(x)<epsilon 并将其分配给布尔变量的函数。如果该变量为 True,则导数 fprime 人为地返回 0,从而导致迭代中止。 gtol 设置为 0。但是,这种方法似乎存在问题,因为显然在 fprime调用和中止之间的某些迭代步骤中使用了人工 0 callback迭代,导致相当不可预测的行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。