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

Machine learning 为什么“fmincg()”中的迭代次数是随机的,即使最大迭代次数是固定的,machine-learning,vectorization,octave,Machine Learning,Vectorization,Octave,我遇到了函数fmincg(),它优化梯度更新,运行迭代并返回优化的参数。尽管它所经历的迭代次数似乎是随机的。'MaxIter'参数固定为200。但每次调用迭代次数都是随机的 为什么fmincg()中的迭代次数是随机的,即使最大迭代次数是固定的 costFunction = @(t) linearRegCostFunction(X, y, t, lambda); options = optimset('MaxIter', 200, 'GradObj', 'on'); theta = fmincg(

我遇到了函数
fmincg()
,它优化梯度更新,运行迭代并返回优化的参数。尽管它所经历的迭代次数似乎是随机的。
'MaxIter'
参数固定为200。但每次调用迭代次数都是随机的

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

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

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

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

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