Python 为什么scipy.optimize.fmin_l_bfgs_b尽管有适当的输入,却无法打印迭代细节?
目标: 查看Python 为什么scipy.optimize.fmin_l_bfgs_b尽管有适当的输入,却无法打印迭代细节?,python,python-2.7,scipy,anaconda,spyder,Python,Python 2.7,Scipy,Anaconda,Spyder,目标: 查看scipy.optimize.fmin_l_bfgs_b每次迭代时的目标函数值 问题: 给出可选参数iprint=1应导致打印输出。但是,这样做不会产生任何输出 其他信息: 我正在Windows7机器上使用Python 2.7的Anaconda4.3发行版,SpyderIDE带有IPython控制台 示例代码: import numpy as np import scipy.optimize as opt A = np.random.rand(20,40) b = np.rando
scipy.optimize.fmin_l_bfgs_b
每次迭代时的目标函数值
问题:
给出可选参数iprint=1
应导致打印输出。但是,这样做不会产生任何输出
其他信息:
我正在Windows7机器上使用Python 2.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)
一种解决方案是使用lambda函数作为回调函数。这样,除了x之外,还可以将A、b传递给回调函数。也许您忘记调用该函数了?我对这一挑衅性评论表示歉意。这是为了建议添加示例代码以再现问题。