【发布时间】:2011-09-27 18:28:21
【问题描述】:
对于 SciPy 函数 fmin_ncg,有没有办法将 hessian 和梯度作为变量而不是函数提供?
我正在尝试用 python 重写一些 Matlab 代码。该代码涉及使用优化例程将一些参数拟合到一组数据。为此,我提供了渐变和粗麻布。例如在 Matlab 中我有这样的东西:
fmincon(@myFunc,x0,[],[],[],[],lb,ub,[],options);
其中myFunc 返回 3 个值:函数求值、梯度和 hessian。
但是对于 Python 中的 fmin_ncg,似乎必须将梯度和粗麻布作为单独的函数提供。
对我来说,这似乎效率低下,因为代码必须经过一个大型数据集,并且函数、梯度和粗麻布有一些共同的计算。例如想象一个函数f(x) = a(x)*b(x),渐变为g(x) = a(x)*c(x),hessian h(x) = a(x)*d(x) ...在Matlab中我可以计算一次a(x),而看起来我必须在python中计算三次。
我是否误解了fmin_ncg 的工作原理,或者有没有办法解决这个问题?
【问题讨论】:
标签: python matlab numpy scipy mathematical-optimization