如何解决使用与 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 举报,一经查实,本站将立刻删除。