【问题标题】:Output function for fminunc in OctaveOctave 中 fminunc 的输出函数
【发布时间】:2013-07-11 16:27:08
【问题描述】:

我正在尝试实现正则化逻辑回归算法,使用 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() 传递给它的参数是什么,它返回什么(如果 @987654328 特别需要的话) @)。

有人可以提一些有用的链接或帮助我编写输出函数。

【问题讨论】:

  • 您还可以实现梯度正态或正态方程来获得中间值,如果您达到 LR,这应该是小菜一碟。

标签: machine-learning octave


【解决方案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);

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多