为什么scipy.optimize.fmin_l_bfgs_b尽管有适当的输入,但未能打印迭代详细信息?

2024-04-20 13:06:18 发布

您现在位置:Python中文网/ 问答频道 /正文

目标:scipy.optimize.fmin_l_bfgs_b的每次迭代中查看目标函数的值。在

问题: 给出可选参数iprint=1应该会导致输出被打印。但是,这样做不会产生任何输出。在

其他信息: 我在windows7机器上使用了python2.7的anaconda4.3发行版,spyderide和IPython控制台。在

示例代码:

import numpy as np
import scipy.optimize as opt

A = np.random.rand(20,40)
b = np.random.rand(20,)
x0 = np.ones((40,))

def objective_func(x,A,b):
    objective = np.sum((A.dot(x)-b)**2) + np.sum(np.abs(x))
    return objective

def gradient_func(x,A,b):
    gradient = 2*A.T.dot(A.dot(x)-b) + 2*x/np.sqrt(x**2 + 10**(-8))
    return gradient

x_bar = opt.fmin_l_bfgs_b(func=objective_func,
                          x0=x0,
                          fprime = gradient_func,
                          args=(A,b),
                          iprint=1)

Tags: import目标asnpscipydotoptimizefunc
1条回答
网友
1楼 · 发布于 2024-04-20 13:06:18

一种解决方案是使用lambda函数作为回调函数。这使得除了x之外,还可以将A、b传递给回调函数

相关问题 更多 >