私にご負担ください。問題は最後です。私はfminuncがどのように呼び出されるかの違いを理解しようとしています。fminuncの引数と匿名関数の理解、関数ハンドラ
この質問は、彼のコースラ機械学習コースでAndrew Ng's Week 3の資料に由来しています。 私はこの質問から跳ね上がります。
Matlab: Meaning of @(t)(costFunction(t, X, y)) from Andrew Ng's Machine Learning classは、私は、引数
@(t) (costFunction(t, X, y))
ユーザーwolfieの意味を理解しようとしています、短縮バージョンであるとして、それを示しました。なぜ誰かが表現そのものがそうでなければならない理由を説明できますか?
function [jVal, gradient] = costFunction(theta)
運動がコードを提供機能のこのバージョンがあります:: ビデオ講義では、彼はこのプログラムファイルからcostFunction
入力と出力のように与えられている
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
のような機能を実行しましたcostFunction(theta, X, y)
。
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
の代わりとして:
[theta, cost] = fminunc(@costFunction, initial_theta, options);
それが呼ばれた理由匿名関数ことなく、第2の場合のように呼び出されfminuncはいなかったのはなぜ
は、それはありますか?
私は明らかにビデオ講義で示されたものが引数としてちょうどシータを持つcostFunctionでしたが、演習で提供されたものはcostFunction(theta、X、y)でした。あなたの答えはまだ正しい方向に私を指摘し、それはまだ正しいことがわかります。ソルバーfminuncは1つの引数しか取ることができませんが、2つ以上の関数を取りますので、ソルバーで最適化したい引数tを1つだけ取る無名関数を定義します。 – heretoinfinity