我遇到了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 % 进行计算 iter = iter + 1 if converged convergence_reached == true
附注:这意味着每次尝试时你输入到方案中的值不同,或者代码中的某个地方有一个随机数生成器。