我遇到了函数fmincg()
,该函数优化了梯度更新并运行了迭代并返回了优化的参数。即使它经过的迭代次数似乎是随机的。 'MaxIter'
参数固定为200。每次调用的迭代次数仍然是随机的。
为什么fmincg()
中的迭代次数是随机的,即使最大迭代次数是固定的,为什么?
costFunction = @(t) linearRegCostFunction(X, y, t, lambda);
options = optimset('MaxIter', 200, 'GradObj', 'on');
theta = fmincg(costFunction, initial_theta, options);
答案 0 :(得分:1)
这是最大次迭代,而不是固定的一次。如果计算在达到最大迭代次数之前收敛,则它将停止。如果不收敛,它将持续到达到'MaxIter'
。
基本上,程序是一个大的while
循环,在伪代码中看起来是
while iter<MaxIter & convergence_reached == false
% Do calculations
iter = iter + 1
if converged
convergence_reached == true
PS:这意味着您每次尝试都会在方案中输入不同的值,或者该代码中的某个地方有一个随机数生成器。