請耐心等待。問題在最後。我試圖找出fminunc被調用的區別。瞭解fminunc參數和匿名函數,函數處理函數
這個問題源於Andrew Ng在Coursera機器學習課程中的第3周材料。 我正在反彈這個問題。 Matlab: Meaning of @(t)(costFunction(t, X, y)) from Andrew Ng's Machine Learning class
我想明白的說法
@(t) (costFunction(t, X, y))
用戶莫扎特的意義,顯示了它作爲一個縮短版。任何人都可以解釋爲什麼表達本身必須是這樣嗎?在視頻演講中,他跑出這樣
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
其中costFunction
輸入和輸出從程序文件中給出的函數:
function [jVal, gradient] = costFunction(theta)
的行使提供的代碼有這個版本的功能: costFunction(theta, X, y)
。
爲什麼沒有fminunc在第二種情況下叫不一樣的匿名函數,這就是爲什麼它被稱爲:
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
,而不是爲:
[theta, cost] = fminunc(@costFunction, initial_theta, options);
?
我編輯了這個問題,顯然視頻講座中顯示的是以theta作爲參數的cost函數,但練習中提供的是costFunction(theta,X,y)。你的回答仍然指向了正確的方向,我發現它仍然是正確的。求解器fminunc只需要一個參數,但我們有一個函數可以接受多個函數,所以我們定義一個匿名函數,它只需要一個參數t,我們希望用求解器進行優化。 – heretoinfinity