赞
踩
反向传播算法的原理是利用链式求导法则计算实际输出结果与理想结果之间的损失函数对每个权重参数或偏置项的偏导数,然后根据优化算法逐层反向地更新权重或偏置项,它采用了前向-后向传播的训练方式,通过不断调整模型中的参数,使损失函数达到收敛,从而构建准确的模型结构。
(w5~w8)以w5为例的梯度计算过程
(w1~w4)以w1为例的梯度计算过程:
def update_w(w1, w2, w3, w4, w5, w6, w7, w8):
# 步长
step = 5
w1 = w1 - step * d_w1
w2 = w2 - step * d_w2
w3 = w3 - step * d_w3
w4 = w4 - step * d_w4
w5 = w5 - step * d_w5
w6 = w6 - step * d_w6
w7 = w7 - step * d_w7
w8 = w8 - step * d_w8
return w1, w2, w3, w4, w5, w6, w7, w8
重复计算可以不断修正w的值。
import numpy as np def sigmoid(z): a = 1 / (1 + np.exp(-z)) return a def forward_propagate(x1, x2, y1, y2, w1, w2, w3, w4, w5, w6, w7, w8): in_h1 = w1 * x1 + w3 * x2 out_h1 = sigmoid(in_h1) in_h2 = w2 * x1 + w4 * x2 out_h2 = sigmoid(in_h2) in_o1 = w5 * out_h1 + w7 * out_h2 out_o1 = sigmoid(in_o1) in_o2 = w6 * out_h1 + w8 * out_h2 out_o2 = sigmoid(in_o2) print("正向计算:o1 ,o2") print(round(out_o1, 5), round(out_o2, 5)) error = (1 / 2) * (out_o1 - y1) ** 2 + (1 / 2) * (out_o2 - y2) ** 2 print
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。