- 企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密
- 王家林 段智华编著
- 602字
- 2021-03-26 23:54:03
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=1739589578-IOEkmUff2DGVHVEvIs7pIFmaFkBzZgOn-0-15b16f02b665127c1dda1baeffc3d863)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P150_130892.jpg?sign=1739589578-lIGF46UgWCWJQ1kDQgtYWCy6xj8V765z-0-1ba5b98986189d78fbf821b9e6fb4355)
在Spyder中运行ANN_V5.py,运行结果如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P150_130893.jpg?sign=1739589578-PowmT4CztPobZyX32uaQMkFtqbNgnBrX-0-0fb7fd25e9a6bbc2dd23cae35826dfae)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P151_130894.jpg?sign=1739589578-n53iXi5o0VtsCpJilpxwZAiQ4Oy7zZ5W-0-9a22496791fddf7adcfa499785b8ee0d)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P152_130895.jpg?sign=1739589578-rSCPtsVpU00OB8fBVcoPnkS88Sk7K2HJ-0-b7d456070e3df4c9e05826abca0a96cb)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P153_130896.jpg?sign=1739589578-w8urXSTIRCCfh9LySEiOg6Sw5xll4JDr-0-6aabd74e82fa6f0d84af46bb76af83af)
从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=1739589578-An7PBWFQV4Ws5OTaHEZe0WTLzw6vkmda-0-59530b596f9fa5627bdda79f664361ce)
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P154_28658.jpg?sign=1739589578-IT57BzpynGWYWlYP0Vle4WhiCthOfdCr-0-0f85ea376366af113bdee6ab1804153b)
图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=1739589578-hdNORW0yKXc748WI2qxCjIUA7lShtZcw-0-e1dbb167e114c20474ab69f25cfe666a)
图9-17 增加到32个神经元
在Spyder中运行ANN_V6.py代码,运行结果如下:
![](https://epubservercos.yuewen.com/A2E645/19549640608913906/epubprivate/OEBPS/Images/Figure-P155_130900.jpg?sign=1739589578-QptEqKufwQwmo2g8Jw81Rbt3bTBcGNDV-0-93e44a1e464dfbc2348246ad4ed97046)
从ANN_V6.py运行结果看,当隐藏层神经元节点数增至32,alpha为10的时候,得到的误差值是0.000 939 536 491 871 338 3,这是目前获得的最好的效果。ANN_V6.py中增加的只是隐藏层的节点,就提高了神经元网络的精确度。
神经网络优化还有一些其他方式,例如,调整内存结构对神经网络的使用、调整偏爱因子、正则化处理(regularization)、随机丢弃一部分神经元及连接(Dropout)、GPU加速等。