![企业级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=1739302360-TZV7lMCxJi94QrYLoNNVEhB7wpeH00cx-0-e8df8ceb3ef8b86e1edcc287190aee51)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P150_130892.jpg?sign=1739302360-O9WXdfy2H3Z4wdf4VSZyVFPZUvPv3w1B-0-ec0f12a8ce2c7736a46446262aabda96)
在Spyder中运行ANN_V5.py,运行结果如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P150_130893.jpg?sign=1739302360-DgIcgwkRZctO4arMPlpQ7eRXr8eyx9Qc-0-33cb7bc15a92a14eef93c67412690b04)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P151_130894.jpg?sign=1739302360-OjA45AgcfuNtgXUtCvdk6DFwMwe11rFT-0-b2c0c4520715c5476ae0635b5e50b062)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P152_130895.jpg?sign=1739302360-4VIx4Ous98n3wMi2P2IXz8CPW8OCQNsM-0-fabff58e648b7d145437b2075fa75ccd)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P153_130896.jpg?sign=1739302360-OeFESOfhsik0WuoYfHRIfAwPIIrqnGwB-0-6a4ca4a3098aac6c21930e72c586fa90)
从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=1739302360-ytDKNmg4FhK3mCARbPT0J5FWCP7rtYqO-0-020c6aad691f00df6c6b1345559b66ff)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P154_28658.jpg?sign=1739302360-f3uyTr54WalxOxtwQ2nuDkoCv7xYoe70-0-b246b11a9b71ceeabd3482754696882c)
图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=1739302360-Sg0r8czMNfNC3Z1AdSHMkmQ7qi70Xmso-0-c02fa8366174fad2df304c9f352f9d32)
图9-17 增加到32个神经元
在Spyder中运行ANN_V6.py代码,运行结果如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P155_130900.jpg?sign=1739302360-lVI8yaKTh2D8EbnYeLZaaXWTUX2OT1ui-0-fcd22b11158ceb1f4e28c595d848f0c9)
从ANN_V6.py运行结果看,当隐藏层神经元节点数增至32,alpha为10的时候,得到的误差值是0.000 939 536 491 871 338 3,这是目前获得的最好的效果。ANN_V6.py中增加的只是隐藏层的节点,就提高了神经元网络的精确度。
神经网络优化还有一些其他方式,例如,调整内存结构对神经网络的使用、调整偏爱因子、正则化处理(regularization)、随机丢弃一部分神经元及连接(Dropout)、GPU加速等。