You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求教Coursera吴恩达ML课程中Gradient Descent函数的第二个if条件含义

梯度下降迭代打印条件的解释

我在Coursera修读吴恩达的机器学习专项课程时,遇到一段实现梯度下降算法的代码。我知道for循环里的第二个if语句是用来打印控制台信息的,但搞不懂if i% math.ceil(num_iters/10) == 0:这个条件的具体含义,希望得到解释。

代码片段

def gradient_descent(x, y, w_in, b_in, alpha, num_iters, cost_function, gradient_function): 

    w = copy.deepcopy(w_in) # avoid modifying global w_in
# An array to store cost J and w's at each iteration primarily for graphing later
    J_history = []
    p_history = []
    b = b_in
    w = w_in

    for i in range(num_iters):

        # Calculate the gradient and update the parameters using gradient_function
        dj_dw, dj_db = gradient_function(x, y, w , b)  

        # Update Parameters using equation (3) above
        b = b - alpha * dj_db                            
        w = w - alpha * dj_dw 
                       
        # Save cost J at each iteration
        if i<100000:      # prevent resource exhaustion 
            J_history.append( cost_function(x, y, w , b))
            p_history.append([w,b])

        # Print cost every at intervals 10 times or as many iterations if < 10
        if i% math.ceil(num_iters/10) == 0:
            print(f"Iteration {i:4}: Cost {J_history[-1]:0.2e} ",
                  f"dj_dw: {dj_dw: 0.3e}, dj_db: {dj_db: 0.3e}  ",
                  f"w: {w: 0.3e}, b:{b: 0.5e}")
    return w, b, J_history, p_history #return w and J,w history for graphing

条件含义拆解

这个条件的核心目标是控制迭代信息的打印频率,确保输出足够但不冗余的监控数据,具体逻辑如下:

  • 划分区间:num_iters/10将总迭代次数分成10等份,得到理想的打印间隔
  • 向上取整:math.ceil(...)对间隔值向上取整,避免因总迭代数无法被10整除出现非整数间隔的问题
  • 判断打印时机:i % 间隔 == 0表示仅当当前迭代次数i是间隔的整数倍(含第0次迭代)时,才打印控制台信息

最终效果

  • 当总迭代次数num_iters ≥ 10时:会打印约10次迭代信息(比如100次迭代打印10次,105次迭代也打印10次),避免控制台刷屏
  • 当总迭代次数num_iters < 10时:每一次迭代都会打印信息(间隔被取整为1,所有i都满足i%1 == 0),确保能看到完整的迭代过程

这样设计可以让开发者清晰监控梯度下降的收敛状态,同时避免输出过多冗余内容。

内容的提问来源于stack exchange,提问作者Rhythm Dutta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:08:25