博客
关于我
神经网络中的矩阵求导及反向传播推导
阅读量:321 次
发布时间:2019-03-03

本文共 647 字,大约阅读时间需要 2 分钟。

两层全连接神经网络的实现涉及前向传播、梯度反向传播以及权重更新过程。以下是优化后的详细步骤说明:

  • 网络结构与初始化

    • 输入层(D_in),隐藏层(H),输出层(D_out)。
    • 权重矩阵w1(D_in x H)和w2(H x D_out)。
    • 随机初始化权重矩阵和学习率。
  • 前向传播

    • 计算隐藏层激活:h = x.dot(w1)。
    • 应用ReLU激活:h_relu = np.maximum(h, 0)。
    • 计算预测值:y_pred = h_relu.dot(w2)。
    • 计算损失:loss = np.sum((y_pred - y)^2)。
  • 梯度反向传播

    • 计算损失对预测值的梯度:grad_y_pred = 2.0 * (y_pred - y)。
    • 计算权重w2的梯度:grad_w2 = h_relu.T.dot(grad_y_pred)。
    • 计算隐藏层梯度:grad_h_relu = grad_y_pred.dot(w2.T);处理ReLU导数,grad_h = grad_h_relu.copy(),grad_h[h < 0] = 0。
    • 计算权重w1的梯度:grad_w1 = x.T.dot(grad_h)。
  • 权重更新

    • 更新w1和w2:w1 -= learning_rate * grad_w1;w2 -= learning_rate * grad_w2。
  • 这种实现方法确保了每个权重参数根据其梯度下降,从而优化模型性能。正确处理激活函数的导数是关键,以确保梯度计算的准确性和模型的有效训练。

    转载地址:http://usgm.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现查找second Largest Element第二大元素算法(附完整源码)
    查看>>
    Objective-C实现查找整数数组中给定的最小数字算法(附完整源码)
    查看>>
    Objective-C实现查找给定节点数的树中可能的二叉搜索树的数量树算法(附完整源码)
    查看>>
    Objective-C实现查找链表的中间元素算法(附完整源码)
    查看>>
    Objective-C实现样条插值(附完整源码)
    查看>>
    Objective-C实现根据cpu和磁盘序列号生成注册码( 附完整源码)
    查看>>
    Objective-C实现格雷码序列算法(附完整源码)
    查看>>
    Objective-C实现桥接模式(附完整源码)
    查看>>
    Objective-C实现检查一个数字是否可以被另一个数字整除算法(附完整源码)
    查看>>
    Objective-C实现检查一年是否是闰年算法 (附完整源码)
    查看>>
    Objective-C实现检查三个点在 3D 中是否共线算法(附完整源码)
    查看>>
    Objective-C实现检查字符串是否包含字母表中所有字母的算法(附完整源码)
    查看>>
    Objective-C实现检查字符是否为字母算法(附完整源码)
    查看>>
    Objective-C实现检查数字是否为偶数算法(附完整源码)
    查看>>
    Objective-C实现检查数字是否为奇数算法(附完整源码)
    查看>>
    Objective-C实现检查给定图中是否存在循环算法(附完整源码)
    查看>>
    Objective-C实现检查给定字符串是否在camelCase中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否在kebabcase中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否在snake_case中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否是扁平(全部小写)的算法(附完整源码)
    查看>>