我在scipy中遇到了回调的这个简单问题。
我正在使用optimize.minimize和值(func,x0,callback = callbackFunc)。 回调函数确实有效,但仅在步骤1之后返回值。
x0=(240.,220.)
Nfeval=0
interim_res
optimize.minimize(func, x0, callback=callbackFunc)
def callbackFunc(X):
global Nfeval, interim_res
print('{0:4d} {1: 3.6f} {2: 3.6f}'.format(Nfeval, X[0], X[1]))
Nfeval += 1
interim_res.append([X[0], X[1]])
所以在我看来它应该从
开始0 240 220
...
但第一次回归是:
0 173.345 159.56
这是通常最小化工作方式还是以某种方式解释错误?
答案 0 :(得分:2)
minimize documentation表示回调:在每次迭代后调用,作为回调(xk),其中xk是当前参数向量。
因此,它应该是最小化工作的方式,必须是第一次迭代后的结果,而不是它开始的值。如果你想完全确定它以你想要的值开头,你总是可以打印每次调用时从最小化传递到 func 的参数。