![TensorFlow知识图谱实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/115/44510115/b_44510115.jpg)
上QQ阅读APP看书,第一时间看更新
3.3.5 反馈神经网络原理的Python实现
本节将使用Python语言对神经网络的反馈算法做一个实现。经过前几节的解释,读者对神经网络的算法和描述有了一定的理解,本节将使用Python代码来实现一个自己的反馈神经网络。
为了简化起见,这里的神经网络被设置成三层,即一个输入层、一个隐藏层和一个最终的输出层。
(1)首先是辅助函数的确定:
![](https://epubservercos.yuewen.com/281CEB/23721624209516806/epubprivate/OEBPS/Images/Figure-P92_11607.jpg?sign=1739687301-NmDa6i8wptPYQ1jVon6SDRyoUXENXB3g-0-e7d403199e6a4b1a129a4e88b4c1d559)
代码首先定义了随机值,使用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函数中设定的数据进行初始化。
![](https://epubservercos.yuewen.com/281CEB/23721624209516806/epubprivate/OEBPS/Images/Figure-P93_11612.jpg?sign=1739687301-89GjqqpOGOxIQUi5zoUvdqwLcacgOvDZ-0-5b34cb0ba6b45b5ad30f7afbb247bfd0)
需要注意,输入层节点个数被设置成ni+1,这是由于其中包含bias偏置数;各个节点与1.0相乘是初始化节点的数值;各个层的权重值根据输入层、隐藏层以及输出层中节点的个数被初始化并被赋值。
(4)定义完各个层的数目后,下面进入正式的神经网络内容的定义。首先是对于神经网络前向的计算。
![](https://epubservercos.yuewen.com/281CEB/23721624209516806/epubprivate/OEBPS/Images/Figure-P93_11614.jpg?sign=1739687301-CjFo2NEDbywJhrrpCrvJNgo72y2X7Vt0-0-fde19d9359df83598bca478df8b76f0e)
代码段中将数据输入到函数中,通过隐藏层和输出层的计算,最终以数组的形式输出。示例的完整代码如下所示。
【程序3-5】
![](https://epubservercos.yuewen.com/281CEB/23721624209516806/epubprivate/OEBPS/Images/Figure-P94_11616.jpg?sign=1739687301-txJoc5hZUixoeVgHWdTA5wMOHbWLPpTU-0-e2d4f67f0ded474e3fd1a6d679f46e26)
![](https://epubservercos.yuewen.com/281CEB/23721624209516806/epubprivate/OEBPS/Images/Figure-P95_8663.jpg?sign=1739687301-2yruu6fi8G2daERsvv0TfbHZbytuv7cS-0-c3cfb9300f9bcd6ecaff3e46474a1e31)