[英]Octave repeated function minimisation
因此,我試圖對數據集執行k倍交叉驗證,但是在獲取八度音階來接受輸入時遇到了問題。 首先,我嘗試使用嵌套平方損失函數來運行fminunc,但是Octave只是說尚不支持。 我的下一個嘗試是使用squaredLoss函數文件,該文件作用於我每次在主函數中更改的全局數據集,但是不斷拋出該數據集未定義的情況。 由於我無法將數據集作為參數傳遞給fminunc,因此應如何解決(或者我是否使用全局變量錯誤?)
for i = 1:NUMBER_OF_FOLDS
global funcdata;
funcdata = data{i};
[theta(i), ~] = fminunc(squaredLoss, theta0);
endfor
其中squaredLoss(theta)
使用funcdata
就像是局部變量一樣。 任何幫助將不勝感激!
好的,因此,似乎Octave不支持嵌套函數,您可以使用匿名函數代替, 請參見here 。 因此,給定示例的解決方案是:
function loss = squaredLoss(coef, funcdata)
...
endfunction
用於squaredLoss
函數文件,這在我的交叉驗證循環中:
for i = 1:NUMBER_OF_FOLDS
funcdata = data{i};
lossFunction = @(coef)squaredLoss(coef, funcdata);
[theta(i), ~] = fminunc(lossFunction, theta0);
endfor
祝你好運流浪的靈魂!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.