前向传播推导过程

反向传播推导过程是根据以上正向传播推导出的,利用求导的链式法则,这里将所搭建的神经网络的代码放上。 求完正向传播和反向传播之后再利用梯度下降算法减小误差。这里将每个参数按照以上规则进行计算。每个神经元与下一个神经元的连接都有权重值和偏置项

import numpy as npdef sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoidD(x):return x * (1 - x)x1s = np.array([])
x2s = np.array([])
x3s = np.array([])y1s = np.array([])
y2s = np.array([])
# 参数定义
# 第一层神经元
#   第一个神经元
w11_1 = np.random.rand()
b11_1 = np.random.rand()w21_1 = np.random.rand()
b21_1 = np.random.rand()w31_1 = np.random.rand()
b31_1 = np.random.rand()#   第二个神经元
w12_1 = np.random.rand()
b12_1 = np.random.rand()w22_1 = np.random.rand()
b22_1 = np.random.rand()w32_1 = np.random.rand()
b32_1 = np.random.rand()#   第三个神经元
w13_1 = np.random.rand()
b13_1 = np.random.rand()w23_1 = np.random.rand()
b23_1 = np.random.rand()w33_1 = np.random.rand()
b33_1 = np.random.rand()#   第四个神经元
w14_1 = np.random.rand()
b14_1 = np.random.rand()w24_1 = np.random.rand()
b24_1 = np.random.rand()w34_1 = np.random.rand()
b34_1 = np.random.rand()# 第二层神经元
#   第一个神经元
w11_2 = np.random.rand()
b11_2 = np.random.rand()
w21_2 = np.random.rand()
b21_2 = np.random.rand()
w31_2 = np.random.rand()
b31_2 = np.random.rand()
w41_2 = np.random.rand()
b41_2 = np.random.rand()#   第二个神经元
w12_2 = np.random.rand()
b12_2 = np.random.rand()
w22_2 = np.random.rand()
b22_2 = np.random.rand()
w32_2 = np.random.rand()
b32_2 = np.random.rand()
w42_2 = np.random.rand()
b42_2 = np.random.rand()# 前向传播
def forward_propgation(x1s, x2s, x3s):# 第一层z1_1 = w11_1 * x1s + b11_1 + w21_1 * x2s + b21_1 + w31_1 * x3s + b31_1a1_1 = sigmoid(z1_1)z2_1 = w12_1 * x1s + b12_1 + w22_1 * x2s + b22_1 + w32_1 * x3s + b32_1a2_1 = sigmoid(z2_1)z3_1 = w13_1 * x1s + b13_1 + w23_1 * x2s + b23_1 + w33_1 * x3s + b33_1a3_1 = sigmoid(z3_1)z4_1 = w14_1 * x1s + b14_1 + w24_1 * x2s + b24_1 + w34_1 * x3s + b34_1a4_1 = sigmoid(z4_1)# 第二层z1_2 = w11_2 * a1_1 + b11_2 + w21_2 * a2_1 + b21_2 + w31_2 * a3_1 + b31_2 + w41_2 * a4_1 + b41_2a1_2 = sigmoid(z1_2)z2_2 = w12_2 * a1_1 + b12_2 + w22_2 * a2_1 + b22_2 + w32_2 * a3_1 + b32_2 + w42_2 * a4_1 + b42_2a2_2 = sigmoid(z2_2)return a2_2, z2_2, a1_2, z1_2, a4_1, z4_1, a3_1, z3_1, a2_1, z2_1, a1_1, z1_1a2_2, z2_2, a1_2, z1_2, a4_1, z4_1, a3_1, z3_1, a2_1, z2_1, a1_1, z1_1 = forward_propgation(x1s, x2s, x3s)for _ in range(5000):for i in range(100):x1 = x1s[i]x2 = x2s[i]x3 = x3s[i]y1 = y1s[i]y2 = y2s[i]# 先完成一次前向传播a2_2, z2_2, a1_2, z1_2, a4_1, z4_1, a3_1, z3_1, a2_1, z2_1, a1_1, z1_1 = forward_propgation(x1s, x2s, x3s)# 误差代价函数e1 = (y1 - a1_2) ** 2e2 = (y2 - a2_2) ** 2# 求w11_2 b11_2 w21_2 b21_2 w31_2 b31_2 w41_2 b41_2# 求w11_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw11_2 = a1_1de1dw11_2 = de1da1_2 * da1_2dz1_2 * dz1_2dw11_2# 求b11_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db11_2 = 1de1db11_2 = de1da1_2 * da1_2dz1_2 * dz1_2db11_2# 求w21_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw21_2 = a2_1de1dw21_2 = de1da1_2 * da1_2dz1_2 * dz1_2dw21_2# 求b21_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db21_2 = 1de1db21_2 = de1da1_2 * da1_2dz1_2 * dz1_2db21_2# 求w31_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw31_2 = a3_1de1dw31_2 = de1da1_2 * da1_2dz1_2 * dz1_2dw31_2# 求b31_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db31_2 = 1de1db31_2 = de1da1_2 * da1_2dz1_2 * dz1_2db31_2# 求w41_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw41_2 = a4_1de1dw41_2 = de1da1_2 * da1_2dz1_2 * dz1_2dw41_2# 求b41_2de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db41_2 = 1de1db41_2 = de1da1_2 * da1_2dz1_2 * dz1_2db41_2# 求w12_2 b12_2 w22_2 b22_2 w32_2 b32_2 w42_2 b42_2# 求w12_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw12_2 = a1_1de2dw12_2 = de2da2_2 * da2_2dz2_2 * dz2_2dw12_2# 求b12_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db12_2 = 1de2db12_2 = de2da2_2 * da2_2dz2_2 * dz2_2db12_2# 求w22_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw22_2 = a2_1de2dw12_2 = de2da2_2 * da2_2dz2_2 * dz2_2dw22_2# 求b22_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db22_2 = 1de2db22_2 = de2da2_2 * da2_2dz2_2 * dz2_2db22_2# 求w32_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw32_2 = a3_1de2dw32_2 = de2da2_2 * da2_2dz2_2 * dz2_2dw32_2# 求b32_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db32_2 = 1de2db32_2 = de2da2_2 * da2_2dz2_2 * dz2_2db32_2# 求w42_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw42_2 = a4_1de2dw42_2 = de2da2_2 * da2_2dz2_2 * dz2_2dw42_2# 求b42_2de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db42_2 = 1de2db42_2 = de2da2_2 * da2_2dz2_2 * dz2_2db42_2# 求w11_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw11_1 = x1de1dw11_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1dw11_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw11_1 = x1de2dw11_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1dw11_1dedw11_1 = de1dw11_1 + de2dw11_1  # 求误差对w11_1的和# 求b11_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db1_1 = 1de1db11_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1db1_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db11_1 = 1de2db11_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1db11_1dedb11_1 = de1db11_1 + de2db11_1  # 求误差对b11_1的和# 求w21_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw21_1 = x2de1dw21_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1dw21_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw21_1 = x2de2dw21_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1dw21_1dedw21_1 = de1dw21_1 + de2dw21_1  # 求误差对w21_1的和# 求b21_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db2_1 = 1de1db21_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1db2_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db21_1 = 1de2db21_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1db21_1dedb21_1 = de1db21_1 + de2db21_1  # 求误差对b21_1的和# 求w31_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw31_1 = x3de1dw31_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1dw31_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw31_1 = x3de2dw31_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1dw31_1dedw31_1 = de1dw31_1 + de2dw31_1  # 求误差对w31_1的和# 求b31_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db3_1 = 1de1db31_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1db3_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db31_1 = 1de2db31_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1db31_1dedb31_1 = de1db31_1 + de2db31_1  # 求误差对b31_1的和# 求w12_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da2_1 = w21_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1dw12_1 = x1de1dw12_1 = de1da1_2 * da1_2dz1_2 * dz1_2da2_1 * da2_1dz2_1 * dz2_1dw12_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da2_1 = w22_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1dw12_1 = x1de2dw12_1 = de2da2_2 * da2_2dz2_2 * dz2_2da2_1 * da2_1dz2_1 * dz2_1dw12_1dedw12_1 = de1dw12_1 + de2dw12_1  # 求误差对w12_1的和# 求b12_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da2_1 = w21_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1db12_1 = 1de1db12_1 = de1da1_2 * da1_2dz1_2 * dz1_2da2_1 * da2_1dz2_1 * dz2_1db12_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da2_1 = w22_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1db12_1 = 1de2db12_1 = de2da2_2 * da2_2dz2_2 * dz2_2da2_1 * da2_1dz2_1 * dz2_1db12_1dedb12_1 = de1db12_1 + de2db12_1  # 求误差对b12_1的和# 求w22_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da2_1 = w21_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1dw22_1 = x2de1dw22_1 = de1da1_2 * da1_2dz1_2 * dz1_2da2_1 * da2_1dz2_1 * dz2_1dw22_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da2_1 = w22_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1dw22_1 = x2de2dw22_1 = de2da2_2 * da2_2dz2_2 * dz2_2da2_1 * da2_1dz2_1 * dz2_1dw22_1dedw22_1 = de1dw22_1 + de2dw22_1  # 求误差对w22_1的和# 求b22_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da2_1 = w21_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1db22_1 = 1de1db22_1 = de1da1_2 * da1_2dz1_2 * dz1_2da2_1 * da2_1dz2_1 * dz2_1db22_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da2_1 = w22_2da2_1dz2_1 = sigmoidD(a2_1)dz2_1db22_1 = 1de2db22_1 = de2da2_2 * da2_2dz2_2 * dz2_2da2_1 * da2_1dz2_1 * dz2_1db22_1dedb22_1 = de1db22_1 + de2db22_1  # 求误差对b22_1的和# 求w32_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw32_1 = x3de1dw32_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1dw32_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1dw32_1 = x3de2dw32_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1dw32_1dedw32_1 = de1dw32_1 + de2dw32_1  # 求误差对w32_1的和# 求b32_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da1_1 = w11_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db32_1 = 1de1db32_1 = de1da1_2 * da1_2dz1_2 * dz1_2da1_1 * da1_1dz1_1 * dz1_1db32_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da1_1 = w12_2da1_1dz1_1 = sigmoidD(a1_1)dz1_1db32_1 = 1de2db32_1 = de2da2_2 * da2_2dz2_2 * dz2_2da1_1 * da1_1dz1_1 * dz1_1db32_1dedb32_1 = de1db32_1 + de2db32_1  # 求误差对b32_1的和# 求w13_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da3_1 = w31_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1dw13_1 = x1de1dw13_1 = de1da1_2 * da1_2dz1_2 * dz1_2da3_1 * da3_1dz3_1 * dz3_1dw13_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da3_1 = w32_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1dw13_1 = x1de2dw13_1 = de2da2_2 * da2_2dz2_2 * dz2_2da3_1 * da3_1dz3_1 * dz3_1dw13_1dedw13_1 = de1dw13_1 + de2dw13_1  # 求误差对w13_1的和# 求b13_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da3_1 = w31_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1db13_1 = 1de1db13_1 = de1da1_2 * da1_2dz1_2 * dz1_2da3_1 * da3_1dz3_1 * dz3_1db13_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da3_1 = w32_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1db13_1 = 1de2db13_1 = de2da2_2 * da2_2dz2_2 * dz2_2da3_1 * da3_1dz3_1 * dz3_1db13_1dedb13_1 = de1db13_1 + de2db13_1  # 求误差对b13_1的和# 求w23_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da3_1 = w31_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1dw23_1 = x2de1dw23_1 = de1da1_2 * da1_2dz1_2 * dz1_2da3_1 * da3_1dz3_1 * dz3_1dw23_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da3_1 = w32_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1dw23_1 = x2de2dw23_1 = de2da2_2 * da2_2dz2_2 * dz2_2da3_1 * da3_1dz3_1 * dz3_1dw23_1dedw23_1 = de1dw23_1 + de2dw23_1  # 求误差对w23_1的和# 求b23_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da3_1 = w31_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1db23_1 = 1de1db23_1 = de1da1_2 * da1_2dz1_2 * dz1_2da3_1 * da3_1dz3_1 * dz3_1db23_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da3_1 = w32_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1db23_1 = 1de2db23_1 = de2da2_2 * da2_2dz2_2 * dz2_2da3_1 * da3_1dz3_1 * dz3_1db23_1dedb23_1 = de1db23_1 + de2db23_1  # 求误差对b23_1的和# 求w33_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da3_1 = w31_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1dw33_1 = x3de1dw33_1 = de1da1_2 * da1_2dz1_2 * dz1_2da3_1 * da3_1dz3_1 * dz3_1dw33_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da3_1 = w32_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1dw33_1 = x3de2dw33_1 = de2da2_2 * da2_2dz2_2 * dz2_2da3_1 * da3_1dz3_1 * dz3_1dw33_1dedw33_1 = de1dw33_1 + de2dw33_1  # 求误差对w33_1的和# 求b23_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da3_1 = w31_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1db33_1 = 1de1db33_1 = de1da1_2 * da1_2dz1_2 * dz1_2da3_1 * da3_1dz3_1 * dz3_1db33_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da3_1 = w32_2da3_1dz3_1 = sigmoidD(a3_1)dz3_1db33_1 = 1de2db33_1 = de2da2_2 * da2_2dz2_2 * dz2_2da3_1 * da3_1dz3_1 * dz3_1db33_1dedb33_1 = de1db33_1 + de2db33_1  # 求误差对b33_1的和# 求w14_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da4_1 = w41_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1dw14_1 = x1de1dw14_1 = de1da1_2 * da1_2dz1_2 * dz1_2da4_1 * da4_1dz4_1 * dz4_1dw14_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da4_1 = w42_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1dw14_1 = x1de2dw14_1 = de2da2_2 * da2_2dz2_2 * dz2_2da4_1 * da4_1dz4_1 * dz4_1dw14_1dedw14_1 = de1dw14_1 + de2dw14_1  # 求误差对w14_1的和# 求b14_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da4_1 = w41_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1db14_1 = 1de1db14_1 = de1da1_2 * da1_2dz1_2 * dz1_2da4_1 * da4_1dz4_1 * dz4_1db14_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da4_1 = w42_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1db14_1 = 1de2db14_1 = de2da2_2 * da2_2dz2_2 * dz2_2da4_1 * da4_1dz4_1 * dz4_1db14_1dedb14_1 = de1db14_1 + de2db14_1  # 求误差对b14_1的和# 求w24_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da4_1 = w41_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1dw24_1 = x2de1dw24_1 = de1da1_2 * da1_2dz1_2 * dz1_2da4_1 * da4_1dz4_1 * dz4_1dw24_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da4_1 = w42_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1dw24_1 = x2de2dw24_1 = de2da2_2 * da2_2dz2_2 * dz2_2da4_1 * da4_1dz4_1 * dz4_1dw24_1dedw24_1 = de1dw24_1 + de2dw24_1  # 求误差对w24_1的和# 求b24_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da4_1 = w41_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1db24_1 = 1de1db24_1 = de1da1_2 * da1_2dz1_2 * dz1_2da4_1 * da4_1dz4_1 * dz4_1db24_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da4_1 = w42_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1db24_1 = 1de2db24_1 = de2da2_2 * da2_2dz2_2 * dz2_2da4_1 * da4_1dz4_1 * dz4_1db24_1dedb24_1 = de1db24_1 + de2db24_1  # 求误差对b24_1的和# 求w34_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da4_1 = w41_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1dw34_1 = x3de1dw34_1 = de1da1_2 * da1_2dz1_2 * dz1_2da4_1 * da4_1dz4_1 * dz4_1dw34_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da4_1 = w42_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1dw34_1 = x3de2dw34_1 = de2da2_2 * da2_2dz2_2 * dz2_2da4_1 * da4_1dz4_1 * dz4_1dw34_1dedw34_1 = de1dw34_1 + de2dw34_1  # 求误差对w34_1的和# 求b34_1de1da1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2da4_1 = w41_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1db34_1 = 1de1db34_1 = de1da1_2 * da1_2dz1_2 * dz1_2da4_1 * da4_1dz4_1 * dz4_1db34_1de2da2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2da4_1 = w42_2da4_1dz4_1 = sigmoidD(a4_1)dz4_1db34_1 = 1de2db34_1 = de2da2_2 * da2_2dz2_2 * dz2_2da4_1 * da4_1dz4_1 * dz4_1db34_1dedb34_1 = de1db34_1 + de2db34_1  # 求误差对b34_1的和deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw11_2 = a1_1dedw11_2 = deda1_2 * da1_2dz1_2 * dz1_2dw11_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db11_2 = 1dedb11_2 = deda1_2 * da1_2dz1_2 * dz1_2db11_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw21_2 = a2_1dedw21_2 = deda1_2 * da1_2dz1_2 * dz1_2dw21_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db21_2 = 1dedb21_2 = deda1_2 * da1_2dz1_2 * dz1_2db21_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw31_2 = a3_1dedw31_2 = deda1_2 * da1_2dz1_2 * dz1_2dw31_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db31_2 = 1dedb31_2 = deda1_2 * da1_2dz1_2 * dz1_2db31_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2dw41_2 = a4_1dedw41_2 = deda1_2 * da1_2dz1_2 * dz1_2dw41_2deda1_2 = -2 * (y1 - a1_2)da1_2dz1_2 = sigmoidD(a1_2)dz1_2db41_2 = 1dedb41_2 = deda1_2 * da1_2dz1_2 * dz1_2db41_2# 第二层,第二个神经元deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw12_2 = a1_1dedw12_2 = deda2_2 * da2_2dz2_2 * dz2_2dw12_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db12_2 = 1dedb12_2 = deda2_2 * da2_2dz2_2 * dz2_2db12_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw22_2 = a2_1dedw22_2 = deda2_2 * da2_2dz2_2 * dz2_2dw22_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db22_2 = 1dedb22_2 = deda2_2 * da2_2dz2_2 * dz2_2db22_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw32_2 = a3_1dedw32_2 = deda2_2 * da2_2dz2_2 * dz2_2dw32_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db32_2 = 1dedb32_2 = deda2_2 * da2_2dz2_2 * dz2_2db32_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2dw42_2 = a4_1dedw42_2 = deda2_2 * da2_2dz2_2 * dz2_2dw42_2deda2_2 = -2 * (y2 - a2_2)da2_2dz2_2 = sigmoidD(a2_2)dz2_2db42_2 = 1dedb42_2 = deda2_2 * da2_2dz2_2 * dz2_2db42_2# 实行梯度下降alpha = 0.02w11_1 = w11_1 - alpha * dedw11_1b11_1 = b11_1 - alpha * dedb11_1w21_1 = w21_1 - alpha * dedw21_1b21_1 = b21_1 - alpha * dedb21_1w31_1 = w31_1 - alpha * dedw31_1b31_1 = b31_1 - alpha * dedb31_1#   第二个神经元w12_1 = w12_1 - alpha * dedw12_1b12_1 = b12_1 - alpha * dedb12_1w22_1 = w22_1 - alpha * dedw22_1b22_1 = b22_1 - alpha * dedb22_1w32_1 = w32_2 - alpha * dedw32_1b32_1 = b32_1 - alpha * dedb32_1#   第三个神经元w13_1 = w13_1 - alpha * dedw13_1b13_1 = b13_1 - alpha * dedb13_1w23_1 = w23_1 - alpha * dedw23_1b23_1 = b23_1 - alpha * dedb23_1w33_1 = w33_1 - alpha * dedw33_1b33_1 = b33_1 - alpha * dedb33_1#   第四个神经元w14_1 = w14_1 - alpha * dedw14_1b14_1 = b14_1 - alpha * dedb14_1w24_1 = w24_1 - alpha * dedw24_1b24_1 = b24_1 - alpha * dedb24_1w34_1 = w34_1 - alpha * dedw34_1b34_1 = b34_1 - alpha * dedb34_1# 第二层神经元#   第一个神经元w11_2 = w11_2 - alpha * dedw11_2b11_2 = b11_2 - alpha * dedb11_2w21_2 = w21_2 - alpha * dedw21_2b21_2 = b21_2 - alpha * dedb21_2w31_2 = w31_2 - alpha * dedw32_2b31_2 = b31_2 - alpha * dedb31_2w41_2 = w41_2 - alpha * dedw41_2b41_2 = b41_2 - alpha * dedb41_2#   第二个神经元w12_2 = w12_2 - alpha * dedw12_2b12_2 = b12_2 - alpha * dedb12_2w22_2 = w22_2 - alpha * dedw22_2b22_2 = b22_2 - alpha * dedb22_2w32_2 = w32_2 - alpha * dedw32_2b32_2 = b32_2 - alpha * dedb32_2w42_2 = w42_2 - alpha * dedw42_2b42_2 = b42_2 - alpha * dedb42_2

神经网络前向传播和反向传播算法(作业4)相关推荐

  1. (二十四) 手推BP神经网络的前向传播和反向传播

    手推BP神经网络的前向传播和反向传播 一.基本术语 1.监督学习与非监督学习 Supervised Learning有监督式学习: 输入的数据被称为训练数据,一个模型需要通过一个训练过程,在这个过程中 ...

  2. 前馈神经网络--前向传播与反向传播计算过程

    目录 2.多层感知机(前馈神经网络) 2.1 定义 2.2 神经元 2.3 激活函数 2.3.1 sigmoid函数 2.3.2 tanh函数 2.3.3 relu函数 2.4 计算 2.4.1 前向 ...

  3. LSTM前向传播与反向传播算法推导(非常详细)

    1.长短期记忆网络LSTM LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN.长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学 ...

  4. 神经网络的前向传播和反向传播

    本博客是对Michael Nielsen所著的<Neural Network and Deep Learning>第2章内容的解读,有兴趣的朋友可以直接阅读原文http://neuraln ...

  5. 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

    目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...

  6. 神经网络的前向传播与反向传播

    神经网络的前向传播和反向传播 相信一开始,大家可能都对神经网络的前向传播和反向传播很头疼,我之前也是一样,后来慢慢懂了,现在深感知识传递的重要性.因此现在我就把我的一点点对两者的理解表达一下,希望能帮 ...

  7. 神经网络理解:前向传播与反向传播

    文章目录 参考资料 神经网络 前向传播 1. 输入层->隐含层 2. 隐含层->输出层 反向传播 1. 计算总误差 2. 隐藏层与输出层之间的权重更新 3. 输入层与隐藏层之间的权重更新 ...

  8. 对于CNN卷积神经网络的前向传播和反向传播的理解

    对于CNN卷积神经网络的前向传播和反向传播的理解 前向传播示意图: ​ 咋一看这张图,作为初学者可能会不知所云( ̄ω ̄=)?但是想要很好的理解前向传播的原理,我们得从这张图细说. 文章目录 对于CNN ...

  9. 神经网络前向传播和反向传播公式推导(公式+图解)

    以如下的预测是否是猫的双层神经网络为例进行公式推导: 符号注解: n_x :  输入特征的数量 n_h : 隐藏层的节点数量 n_y : 输出层的节点数量 m : 样本数量 W :权重矩阵 b :偏置 ...

  10. 详解+推导 神经网络中的前向传播和反向传播公式(神经网络中的梯度下降)

    文章目录 线性回归快速回忆 逻辑回归中的正向传播与反向传播 逻辑回归中的正向传播与反向传播-代码实战 神经网络的正向传播与反向传播 参考资料 线性回归快速回忆 在线性回归(y=ax+by=ax+by= ...

最新文章

  1. 2022-2028年中国服装电商行业发展战略规划及投资方向研究报告
  2. Centos6.X升级glibc解决“libc.so.6 version GLIBC_2.14 not found”报错问题
  3. 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
  4. python3.6sysos_Python 常用内置模块——sys、os
  5. 小程序canvan画布,现两张图片合成一张,并保存到本地
  6. Android培训翻译_允许其他应用程序启动你的Activity
  7. 语言逻辑运算符两侧运算对象_5.3 C语言逻辑运算符与表达式
  8. vc实现html显示,在VC对话框中用ChtmlView控件显示HTML(2)
  9. Flask开发服务器
  10. 设计一个扩展自抽象类geometricobject_设计模式4之模板方法模式
  11. Jquery Ajax 异步设置Table中某列的值
  12. 《高数叔》概率论与数理统计期末总复习笔记(持续更新中)
  13. miui10,miui11,miui12 rom下载,支持市面常见机型
  14. UniDAC 的 RecordCount 属性注意事项
  15. WPF 委托和事件实现子窗口回调函数, 实时刷新主窗口控件
  16. 可ping通主机而不能连上主机端口的一般原因
  17. gsap_使用GSAP的动画库为Bootstrap传送带制作动画
  18. 修复迅雷看看xmp.rmvb视频文件错误关联
  19. 用c写的桥牌发牌代码
  20. 普天发布新一代配线架,终结争论?

热门文章

  1. 中国古典学名著选读网课考试题2021版答案
  2. python 百度ai json解析_百度AI接口调用
  3. windows11没有ie浏览器解决办法
  4. 网页yy语音(歪歪语音) 网页版
  5. OpenCV学习笔记-Shi-Tomasi角点检测
  6. 关于计算机学院 公众号的名字,最新微信公众号名字大全
  7. 快捷方式图标变成白色
  8. MySQL数据库知识大全
  9. ubuntu samba Windows共享 你可能没有权限访问网络资源
  10. excel与python生成正态分布的数据,实践