Octave中fminunc的输出函数

3

我正在尝试使用Octave中的fminunc()函数来实现正则化逻辑回归算法,以最小化代价函数。通常建议,我想将代价函数作为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()需要特定的返回结果)。
请问有人可以提供一些有用的链接或协助我编写输出函数吗?

如果你已经掌握了LR,那么使用梯度下降或正规方程求解中间值也应该非常简单。 - Denys S.
1个回答

1
我认为您可以参考源代码。同时,考虑以下示例:
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接