luzhiweireus 2021-09-20 02:42 采纳率: 75%
浏览 27
已结题

这两个函数中两个局部变量b_grad和k_grad的位置,给最终返回的b,k值带来的影响在哪里?


def gradient_descent_runner(b, k):
    # 计算数据总数
    m = float(len(x_data))

    for i in range(epochs):
        # 计算梯度总和求平均
        b_grad = 0
        k_grad = 0
        for j in range(0, len(x_data)):
            b_grad += (1 / m) * ((k * x_data[j] + b) - y_data[j])
            k_grad += (1 / m) * x_data[j] * ((k * x_data[j] + b) - y_data[j])
        # 更新b和k
        b = b - (Ir * b_grad)
        k = k - (Ir * k_grad)

    return b, k

def gradient_descent_runner(b, k):
    # 计算数据总数
    m = float(len(x_data))
    b_grad = 0
    k_grad = 0
    for i in range(epochs):
        # 计算梯度总和求平均

        for j in range(0, len(x_data)):
            b_grad += (1 / m) * ((k * x_data[j] + b) - y_data[j])
            k_grad += (1 / m) * x_data[j] * ((k * x_data[j] + b) - y_data[j])
        # 更新b和k
        b = b - (Ir * b_grad)
        k = k - (Ir * k_grad)

    return b, k
  • 写回答

1条回答 默认 最新

  • 微笑的菜鸟 2021-09-20 09:04
    关注

    方法一赋值在循环里面,b_grad和g_grad每次循环都会先重置为0,所以最终只有最后一个循环的结果

     

    方法二赋值在循环外面,b_grad和g_grad会叠加每次循环的结果,最后得到所有循环的总合

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 创建了问题 9月20日

悬赏问题

  • ¥15 求一段隐藏代码,隐藏一些内容
  • ¥15 汇川EASY521plc电子凸轮
  • ¥15 C++ 如何判断设置快捷键来实现隐藏/显示窗口
  • ¥15 关于#材料工程#的问题:有没有具有电子阻挡层和空穴阻挡层的电池仿真silvaco代码例子或者其他器件具有阻挡层例子的silvaco代码(最好还有相关文献)
  • ¥60 基于MATLAB的TAOD算法
  • ¥15 Groimp使用疑问
  • ¥15 MDK–ARM里一直找不到调试器
  • ¥15 oracle中sql查询问题
  • ¥15 vue使用gojs3.0版本,在nodeDataArray中的iconSrc使用gif本地路径,展示出来后动画是静态的,不是动态的
  • ¥100 代写个MATLAB代码,有偿