繁体   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