![企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密](https://wfqqreader-1252317822.image.myqcloud.com/cover/212/36862212/b_36862212.jpg)
9.3 人工智能框架的改进优化
ANN_V4.py进行了系数alpha的优化,ANN_V5.py和ANN_V4.py的代码没有太大的区别,它们alpha系数更新权重的核心算法是一样的。ANN_V5.py提供了synapse_0、synapse_1权重变化率方向的次数统计,将这一次权重的变化率与上一次的权重变化率进行比较,如果两者的变化率方向一致,则计数为0;如果两者的变化率方向相反,则计数为1。然后将统计的计数进行累加。
ANN_V5.py的源代码如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P149_130891.jpg?sign=1738871102-W98o2sVGXiMEVhXGzX1yRdf1RpKTQuOH-0-4041d22e72073d66a823dcce35684874)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P150_130892.jpg?sign=1738871102-gTHqBKr7aUuTvWdcjRKZL6DXfMotBP6j-0-5dcaf6a9b9f0e354f12ff5130e4a7e16)
在Spyder中运行ANN_V5.py,运行结果如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P150_130893.jpg?sign=1738871102-qSBEtZDht5iI2aMHv5ZNEocjbGKSpaC0-0-355f0e2c153e2d3abc55d8f3b7cd01f1)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P151_130894.jpg?sign=1738871102-iCkjuAhbwyAAdGVKWjxjP8eG9l3UOB1P-0-2f1ccfebba4714cb4774da5940456ccb)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P152_130895.jpg?sign=1738871102-SIehFZ1nPFJmqRCJl9hfBr38cnFZnoCg-0-8ba59abc2915216ca4e3fa6cf5f91517)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P153_130896.jpg?sign=1738871102-jIktRcKpLiWIDwcJ63L5vM5MUD2JboAu-0-7d180f9080e7b561c1660368d6e4022b)
从ANN_V5.py的运行结果看,隐藏层神经元节点数为4,alpha等于10的时候,效果最好,误差值达到0.001 312 740 628 335 676 4。
如图9-16所示,在TensorFlow的可视化图中,可以通过单击“+”“–”按钮随意增减隐藏层及神经元节点。
我们在代码中也可以增加神经网络的隐藏层及神经元节点数,ANN_V6.py在ANN_V4.py的基础上对隐藏层神经元节点数进行了优化。
ANN_V6.py的源代码如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P153_130897.jpg?sign=1738871102-LOPiWutbJQKKxhKoltD59q9gq6EluafU-0-64d2c67ad65fa98dd05f2d72bb8a9dd2)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P154_28658.jpg?sign=1738871102-zYHas8RATn7NwI0adQdQwXcjUghq0GpI-0-b5df795b89edc829669ed4f598b689b1)
图9-16 在TensorFlow可视化图中增加神经元节点
在ANN_V6.py的源代码中:
第5行代码设置隐藏层的神经元节点数为32。
第31、32行代码将设置的神经元节点数传入权重synapse_0、synapse_1,进行权重矩阵的初始化赋值。
ANN_V6.py实现的神经网络结构如图9-17所示。
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P155_29027.jpg?sign=1738871102-4U21PSzHFE1oLXLaFFEqOjaF3HvXWT56-0-6d054f49e35045581b89dedfa71f78c3)
图9-17 增加到32个神经元
在Spyder中运行ANN_V6.py代码,运行结果如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P155_130900.jpg?sign=1738871102-M2piMl2UT53xoV4nS1AwXsuy6EPDzePt-0-21a6b79a76bf67aa954349675af09c4d)
从ANN_V6.py运行结果看,当隐藏层神经元节点数增至32,alpha为10的时候,得到的误差值是0.000 939 536 491 871 338 3,这是目前获得的最好的效果。ANN_V6.py中增加的只是隐藏层的节点,就提高了神经元网络的精确度。
神经网络优化还有一些其他方式,例如,调整内存结构对神经网络的使用、调整偏爱因子、正则化处理(regularization)、随机丢弃一部分神经元及连接(Dropout)、GPU加速等。