2
我想尽量减少使用scipy.optimize.minimize
在Python中的函数,以确定四个不同的参数。在scipy最小化期间打印当前评估参数
我想在优化算法的每一步打印当前评估的参数,所以我可以使用它们来使我的初步猜测更好。
我该怎么做?
我想尽量减少使用scipy.optimize.minimize
在Python中的函数,以确定四个不同的参数。在scipy最小化期间打印当前评估参数
我想在优化算法的每一步打印当前评估的参数,所以我可以使用它们来使我的初步猜测更好。
我该怎么做?
使用callback
关键字参数。
scipy.optimize.minimize
可以采用关键字参数callback
。这应该是一个接受参数当前向量作为输入的函数。这个函数在每次迭代之后调用。
例如,
from scipy.optimize import minimize
def objective_function(xs):
""" Function to optimize. """
x, y = xs
return (x-1)**2 + (y-2)**4
def print_callback(xs):
"""
Callback called after every iteration.
xs is the estimated location of the optimum.
"""
print xs
minimize(objective_function, x0 = (0., 0.), callback=print_callback)
通常情况下,一个人想保留不同调用回调,如之间的信息,例如,迭代次数。要做到这一点的方法之一是使用闭包:
def generate_print_callback():
"""
Generate a callback that prints
iteration number | parameter values | objective function
every tenth iteration.
"""
saved_params = { "iteration_number" : 0 }
def print_callback(xs):
if saved_params["iteration_number"] % 10 == 0:
print "{:3} | {} | {}".format(
saved_params["iteration_number"], xs, objective_function(xs))
saved_params["iteration_number"] += 1
return print_callback
调用具有最小化功能:
minimize(objective_function, x0 = (0., 0.), callback=generate_print_callback())
嗯并不为我工作。没有打印 – Taylor 2016-04-07 21:28:04