SciPy関数fmin_ncg
については、関数ではなく変数としてhessianとgradientを提供する方法がありますか?Pythonのheminianをfmin_ncgに補完する
私はいくつかのMatlabコードをPythonで書き直そうとしています。このコードでは、最適化ルーチンを使用していくつかのパラメータを一連のデータに適合させます。これを行うために、私はグラデーションとヘッセ行列を提供しました。
fmincon(@myFunc,x0,[],[],[],[],lb,ub,[],options);
どこmyFunc
戻り値3:機能評価、勾配、およびヘッセ例えばMATLABでは、私はこのような何かを持っています。
しかし、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)
を計算することができます。ここでは、この3回の計算をPythonで行う必要があります。
fmin_ncg
がどのように機能するのか誤解しましたか?
試してみてください。 –