上QQ阅读APP看书,第一时间看更新
3.3.5 反馈神经网络原理的Python实现
本节将使用Python语言对神经网络的反馈算法做一个实现。经过前几节的解释,读者对神经网络的算法和描述有了一定的理解,本节将使用Python代码来实现一个自己的反馈神经网络。
为了简化起见,这里的神经网络被设置成三层,即一个输入层、一个隐藏层和一个最终的输出层。
(1)首先是辅助函数的确定:
代码首先定义了随机值,使用random包中的random函数生成一系列随机数,之后的make_matrix函数生成了相对应的矩阵。sigmoid和sigmod_derivate分别是激活函数和激活函数的导函数。这也是前文所定义的内容。
(2)之后进入BP神经网络类的正式定义,类的定义需要对数据进行内容的设定。
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_weights = [] self.output_weights = []
init函数是数据内容的初始化,即在其中设置了输入层、隐藏层以及输出层中节点的个数;各个cell数据是各个层中节点的数值;weights数据代表各个层的权重。
(3)setup函数的作用是对init函数中设定的数据进行初始化。
需要注意,输入层节点个数被设置成ni+1,这是由于其中包含bias偏置数;各个节点与1.0相乘是初始化节点的数值;各个层的权重值根据输入层、隐藏层以及输出层中节点的个数被初始化并被赋值。
(4)定义完各个层的数目后,下面进入正式的神经网络内容的定义。首先是对于神经网络前向的计算。
代码段中将数据输入到函数中,通过隐藏层和输出层的计算,最终以数组的形式输出。示例的完整代码如下所示。
【程序3-5】