我正在尝试使用Octave中的fminunc()
函数来实现Regularized Logistic回归算法,以最大限度地降低成本函数。一般建议,我想将成本函数绘制为fminunc()
函数迭代的函数。函数调用如下所示 -
[theta, J, exit_flag] = ...
fminunc(@(t)(costFunctionReg(t, X, y, lambda)), initial_theta, options);
与
options = optimset('GradObj', 'on', 'MaxIter', 400, 'OutputFcn',@showJ_history);
[showJ-history
是预期的输出函数;我希望我已正确设置options
参数。
但是,我在互联网上找不到好的资料来突出如何编写这个输出函数,具体来说,fminunc()
传递给它的参数是什么,它返回什么(如果特别需要的话) fminunc()
)。
有人可以提一些有用的链接或协助我编写输出功能。
答案 0 :(得分:1)
我想你可以参考the source code。还要考虑这个例子:
1;
function f = __rosenb (x)
# http://en.wikipedia.org/wiki/Rosenbrock_function
n = length (x);
f = sumsq (1 - x(1:n-1)) + 100 * sumsq (x(2:n) - x(1:n-1).^2);
endfunction
function bstop = showJ_history(x, optv, state)
plot(optv.iter, optv.fval, 'x')
# setting bstop to true stops optimization
bstop = false;
endfunction
opt = optimset('OutputFcn', @showJ_history);
figure()
xlabel("iteration")
ylabel("cost function")
hold on
[x, fval, info, out] = fminunc (@__rosenb, [5, -5], opt);