gpt4 book ai didi

python - 在 scipy 最小化期间​​打印当前评估的参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:09 24 4
gpt4 key购买 nike

我正在尝试使用 scipy.optimize.minimize 最小化 Python 中的函数,以确定四个不同的参数。

我想在优化算法的每一步打印当前评估的参数,这样我就可以使用它们来改进我的初始猜测。

我该怎么做?

最佳答案

使用 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())

关于python - 在 scipy 最小化期间​​打印当前评估的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27564436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com