为什么 `fmincg()` 中的迭代次数是随机的,即使最大迭代次数是固定的
Why is the number if iterations in `fmincg()` random, even though the maximum number of iterations is fixed
我遇到了函数 fmincg()
,它优化梯度更新并运行迭代和 returns 优化参数。尽管它经历的迭代次数似乎是随机的。 '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
PS:这意味着您每次尝试都将不同的值输入到您的方案中,或者该代码中某处有一个随机数生成器。
我遇到了函数 fmincg()
,它优化梯度更新并运行迭代和 returns 优化参数。尽管它经历的迭代次数似乎是随机的。 '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
PS:这意味着您每次尝试都将不同的值输入到您的方案中,或者该代码中某处有一个随机数生成器。