即使最大迭代次数是固定的,如果`fmincg()`中的迭代次数是随机的,为什么会有这个数字

时间:2020-04-06 15:14:35

标签: machine-learning vectorization octave

我遇到了函数fmincg(),该函数优化了梯度更新并运行了迭代并返回了优化的参数。即使它经过的迭代次数似乎是随机的。 'MaxIter'参数固定为200。每次调用的迭代次数仍然是随机的。

为什么fmincg()中的迭代次数是随机的,即使最大迭代次数是固定的,为什么?

costFunction = @(t) linearRegCostFunction(X, y, t, lambda);
options = optimset('MaxIter', 200, 'GradObj', 'on');
theta = fmincg(costFunction, initial_theta, options);

enter image description here

1 个答案:

答案 0 :(得分:1)

这是最大次迭代,而不是固定的一次。如果计算在达到最大迭代次数之前收敛,则它将停止。如果不收敛,它将持续到达到'MaxIter'

基本上,程序是一个大的while循环,在伪代码中看起来是

while iter<MaxIter & convergence_reached == false
    % Do calculations
    iter = iter + 1
    if converged
        convergence_reached == true

PS:这意味着您每次尝试都会在方案中输入不同的值,或者该代码中的某个地方有一个随机数生成器。