簡體   English   中英

倍頻程最小化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM