⚽开发平台:jupyter lab
🎈运行环境:python3、tensorflow2.x
第3章 深度学习的理论基础 --- BP反馈神经网络反向传播算法
1.反馈神经网络反向传播算法介绍
- 说明:反向传播算法是神经网络的核心和精髓,在神经网络算法中具有举足轻重的地位。
- 注意点:
(1)对于隐藏层,误差并不是想输出层一样由单个节点确定,而是由多个节点确定,因此对它的计算要求得到所有的误差值之和。
(2)对于各层的影响:- 对输出层单元,误差项是真实值与模型计算值之间的差值。
- 对于隐藏层单元,由于缺少直接的目标值来计算隐藏层单元的误差,因此需要以间接的方式来计算隐藏层的误差项对受隐藏层单元影响的每一个单元的误差进行加权求和。
- 权值的更新方面,主要依靠学习速率、该权值对应的输入以及单元的误差项。
2. 反馈神经网络反向传播算法 - 程序部分
2.1 程序3.5(完整代码)
## 导入相应的工具包
import numpy as np
import math
import random
### 辅助函数的确定
def rand(a,b): ## 生成随机数
return (b-a)*random.random() + a
def make_matrix(m,n,fill=0.0): ## 生成随机数相对应的矩阵
mat = []
for i in range(m):
mat.append([fill]*n)
return mat
def sigmoid(x): ## 激活函数
return 1.0/(1.0+math.exp(-x))
def sigmod_derivate(x): ## 激活函数的导函数
return x*(1-x)
### BP类的正式定义
class BPNeuralNetWork:
## 读数据内容的初始化,即在其中设置了输入层、隐藏层以及输出层中节点的个数;
## 各个cell数据是各个层节点的数值;weight代表各个层的权重。
def __init__(self):
self.input_n = 0
self.hidden_n = 0
self.output_n = 0
self.input_cells = []
self.hidden_cells = []
self.output_cells = []
self.input_weight = []
self