本文共 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/