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