博客
关于我
神经网络中的矩阵求导及反向传播推导
阅读量: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实现寻找欧拉路径/回路(附完整源码)
    查看>>
    Objective-C实现导弹跟踪算法(附完整源码)
    查看>>
    Objective-C实现将 base64 字符串转换为字节数组算法(附完整源码)
    查看>>
    Objective-C实现将位转换为浮点数bitsToFloat算法(附完整源码)
    查看>>
    Objective-C实现将列表向右旋转 k 个位置算法(附完整源码)
    查看>>
    Objective-C实现将字符串中大写字母转换为小写字母(附完整源码)
    查看>>
    Objective-C实现将字符串从一个基转换为另一个基算法(附完整源码)
    查看>>
    Objective-C实现将字节数组转换为 base64 编码算法(附完整源码)
    查看>>
    Objective-C实现将彩色图像转换为负片算法(附完整源码)
    查看>>
    Objective-C实现将无符号整数n变成成d进制表示的字符串s(附完整源码)
    查看>>
    Objective-C实现将给定的 utf-8 字符串编码为 base-16算法(附完整源码)
    查看>>
    Objective-C实现将给定的字符串编码为 base32算法(附完整源码)
    查看>>
    Objective-C实现小根堆(附完整源码)
    查看>>
    Objective-C实现局域网双向通信(附完整源码)
    查看>>
    Objective-C实现局部最大值点数算法(附完整源码)
    查看>>
    Objective-C实现屏幕捕获功能( 附完整源码)
    查看>>
    Objective-C实现峰值信噪比算法(附完整源码)
    查看>>
    Objective-C实现已线段的形式求曲线长算法(附完整源码)
    查看>>
    Objective-C实现已递归的方式找到一个数字数组的最大值算法(附完整源码)
    查看>>
    Objective-C实现巴比伦平方根算法(附完整源码)
    查看>>