国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

BP神經(jīng)網(wǎng)絡(luò)數(shù)字識別的Matlab實(shí)現(xiàn)

2019-11-16 06:01羅莉
電子技術(shù)與軟件工程 2019年20期
關(guān)鍵詞:隱層測試數(shù)據(jù)結(jié)點(diǎn)

文/羅莉

1 引言

BP神經(jīng)網(wǎng)絡(luò)是一種按照誤差逆向傳播算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò),已廣泛應(yīng)用于模式識別、函數(shù)逼近、信號處理和自動(dòng)控制等領(lǐng)域,是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)。

在目前數(shù)學(xué)和工程計(jì)算領(lǐng)域較為通用的軟件Matlab中,針對神經(jīng)網(wǎng)絡(luò)系統(tǒng)的分析與設(shè)計(jì),提供了大量可供直接調(diào)用的工具箱函數(shù)、圖形用戶界面和Simulink仿真工具,是進(jìn)行神經(jīng)網(wǎng)絡(luò)系統(tǒng)分析與設(shè)計(jì)的一個(gè)很好的工具。

在使用Matlab建模BP神經(jīng)網(wǎng)絡(luò)過程中,需要調(diào)用函數(shù)newff建立一個(gè)可訓(xùn)練的前饋網(wǎng)絡(luò),此函數(shù)存在新舊兩個(gè)版本,而現(xiàn)在文獻(xiàn)介紹的都是舊版本的使用,對于新版本如何使用卻鮮有介紹。導(dǎo)致現(xiàn)在很多用戶使用新版本訓(xùn)練函數(shù)newff時(shí),遇到訓(xùn)練結(jié)果不理想的問題,苦于找不到原因。本文即以數(shù)字識別為例,一方面指出新老版本newff使用上的區(qū)別,另一方面對常見的訓(xùn)練函數(shù)進(jìn)行對比實(shí)驗(yàn),找到了適用于本文案例的最佳訓(xùn)練函數(shù)。

2 基于數(shù)字識別的BP神經(jīng)網(wǎng)絡(luò)構(gòu)建

現(xiàn)需要設(shè)計(jì)一個(gè)三層BP神經(jīng)網(wǎng)絡(luò)對數(shù)字0至9進(jìn)行分類識別,訓(xùn)練數(shù)據(jù)如圖1所示,測試數(shù)據(jù)如圖2所示,文獻(xiàn)[5]中有描述。

該分類問題有10類,由此可設(shè)計(jì)出BP網(wǎng)絡(luò)的輸出層有10個(gè)結(jié)點(diǎn),可采用如圖3所示的輸出目標(biāo)矩陣。

圖3中的第1列向量代表數(shù)字0的目標(biāo)輸出,第2列向量代表數(shù)字1的目標(biāo)輸出,第3列向量代表數(shù)字2的目標(biāo)輸出,以此類推……

由圖1可知訓(xùn)練數(shù)據(jù)的每個(gè)數(shù)字可用9×7的網(wǎng)格表示,用白色像素代表0,灰色像素代表1,可將網(wǎng)格表示為0或者1的長位串。位映射由左上角開始向下直到網(wǎng)格的整個(gè)一列,然后重復(fù)其他列。如數(shù)字“1”的網(wǎng)格的數(shù)字串表示為{0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,1,0;0,0,1,0,0,0,0,1,0;0,1,1,1,1,1,1,1,0;0,0,0,0,0,0,0,1,0;0,0,0,0,0,0,0,1,0;0,0,0,0,0,0,0,0,0}。由此可確定輸入層有9×7=63個(gè)結(jié)點(diǎn),對應(yīng)上述網(wǎng)格的映射。

輸入與輸出層的結(jié)點(diǎn)個(gè)數(shù)已確定,分別是63和10,對于此類比較簡單的分類問題,選用一個(gè)隱層即可。隱層結(jié)點(diǎn)數(shù)如何確定?對于BP網(wǎng)絡(luò)結(jié)構(gòu)中隱層結(jié)點(diǎn)數(shù)的選取沒有完善的理論可以利用,目前均是進(jìn)行摸索試驗(yàn)。一般地,確定三層BP網(wǎng)絡(luò)的隱層結(jié)點(diǎn)數(shù)的經(jīng)驗(yàn)公式有如下幾個(gè):(m為隱層結(jié)點(diǎn)數(shù);n為輸入層節(jié)點(diǎn)數(shù);l為輸出層結(jié)點(diǎn)數(shù);α為1~10之間的常數(shù))。基于上面3個(gè)經(jīng)驗(yàn)公式,我們又經(jīng)過多次摸索試驗(yàn),最終決定隱層結(jié)點(diǎn)數(shù)設(shè)置為20比較優(yōu),于是構(gòu)造出網(wǎng)絡(luò)結(jié)構(gòu)為63-20-10的BP神經(jīng)網(wǎng)絡(luò),如圖4所示。

圖1:數(shù)字分類訓(xùn)練數(shù)據(jù)

圖2:數(shù)字分類測試數(shù)據(jù)

3 Matlab實(shí)現(xiàn)

3.1 newff函數(shù)新舊版本區(qū)別及實(shí)現(xiàn)

使用Matlab創(chuàng)建神經(jīng)網(wǎng)絡(luò)時(shí),需要用到newff函數(shù)建立網(wǎng)絡(luò)對象,但若使用舊版本的newff函數(shù),會(huì)出現(xiàn)警告信息,這是由于使用了舊版本的newff參數(shù)列表。解決方法很簡單,就是改為新版本形式的參數(shù)列表。舊版本中第一個(gè)參數(shù)需要結(jié)合minmax()函數(shù)使用,新版本不需要了;另外新版本中不需要指定輸出層的神經(jīng)元個(gè)數(shù),改為由輸入?yún)?shù)output決定,其他參數(shù)不變。這是新舊版本創(chuàng)建神經(jīng)網(wǎng)絡(luò)方法的不同,但存在另外一個(gè)問題,即使相同的數(shù)據(jù)和參數(shù)下,新舊版本的計(jì)算結(jié)果總是不一樣,而且二者偏差很大,通常新版本的newff方法的識別率總是偏低。造成此問題的原因是新版本的神經(jīng)網(wǎng)絡(luò)函數(shù)把訓(xùn)練集分成了3份,即訓(xùn)練集train set,驗(yàn)證集validation set和測試集test set,默認(rèn)比例為7:1.5:1.5。

而在類似本文案例的BP網(wǎng)絡(luò)構(gòu)建中,由于訓(xùn)練數(shù)據(jù)少,訓(xùn)練集必須要完全保留進(jìn)行訓(xùn)練,否則訓(xùn)練的效果會(huì)出現(xiàn)很大的偏差。通過仔細(xì)比較新舊兩個(gè)子函數(shù),發(fā)現(xiàn)新版設(shè)置了net.divideFcn屬性,其值為'dividerand',解決辦法是在新版net中再添加一條語句:net.divideFcn=''。示例語句如下(其中X是輸入向量集,Y是目標(biāo)輸出向量集,數(shù)字20是隱層結(jié)點(diǎn)數(shù)):

圖3:BP網(wǎng)絡(luò)輸出目標(biāo)值

圖4:BP神經(jīng)網(wǎng)絡(luò)(63-20-10)結(jié)構(gòu)

上述代碼中,X是訓(xùn)練數(shù)據(jù)(如圖1所示),Y是目標(biāo)輸出值(如圖3所示),T是測試數(shù)據(jù)(如圖2所示),Sim_T是測試數(shù)據(jù)識別輸出結(jié)果。

3.2 訓(xùn)練函數(shù)實(shí)驗(yàn)比較

確定了BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)以及在Matlab中的實(shí)現(xiàn)方法,還需要確定的是訓(xùn)練函數(shù)。本文選取了幾種常用的訓(xùn)練算法進(jìn)行實(shí)驗(yàn),有traingd(基本梯度下降法)、traingdm(帶有動(dòng)量項(xiàng)的梯度下降法)、traingdx(帶有動(dòng)量項(xiàng)的自適應(yīng)學(xué)習(xí)算法)、trainlm(L-M優(yōu)化算法)、trainbr(貝葉斯正則法)。

表1:不同訓(xùn)練函數(shù)實(shí)驗(yàn)結(jié)果比較

圖5:trainbr測試輸出結(jié)果

設(shè)定訓(xùn)練目標(biāo)(goal)的值為1e-05,最小性能梯度(min_grad)的值為1e-025,學(xué)習(xí)步長(lr)的值為1,隱層和輸出層的傳遞函數(shù)都設(shè)置為“tansig”,其它為默認(rèn)值,可參考文獻(xiàn)[8][9][10]。針對本文的要求進(jìn)行多次實(shí)驗(yàn),下面給出實(shí)驗(yàn)結(jié)果對照表1。

本文實(shí)驗(yàn)所采用的Matlab版本為R2016b,實(shí)驗(yàn)電腦CPU配置為Intel Pentium G2030 3.0GHz。

表1中的實(shí)驗(yàn)數(shù)據(jù)是對各種訓(xùn)練函數(shù)連續(xù)運(yùn)行20次后取的平均值。

從表1中“測試數(shù)據(jù)識別成功率”一項(xiàng)可看出,只有trainbr的識別成功率非常高,幾乎100%準(zhǔn)確,其它幾種訓(xùn)練函數(shù)的識別成功率都在50%左右,效果不理想。圖5 給出了trainbr某一次訓(xùn)練后測試數(shù)據(jù)識別輸出結(jié)果,圖6為trainbr訓(xùn)練數(shù)據(jù)均方誤差曲線。

由圖5可見,trainbr的測試輸出結(jié)果符合分類識別要求。圖2所示測試數(shù)據(jù)都有一個(gè)或者多個(gè)位丟失。測試結(jié)果表明,除了8以外,所有被測數(shù)字都能夠被正確地識別。圖5數(shù)據(jù)所示,對于測試數(shù)字8,對應(yīng)數(shù)字6的結(jié)點(diǎn)上的輸出值為0.4513,而對應(yīng)數(shù)字8的結(jié)點(diǎn)上的輸出值為0.3971,表明第8個(gè)測試數(shù)據(jù)是模糊的,可能是數(shù)字6,也可能是數(shù)字8。實(shí)際上,人識別這個(gè)數(shù)字時(shí)也會(huì)發(fā)生這種錯(cuò)誤;對于測試數(shù)字9,丟失的像素點(diǎn)較多,但人眼識別出來還是數(shù)字9的可能性最大,測試輸出的結(jié)果也是符合的,在對應(yīng)數(shù)字9的結(jié)點(diǎn)上的輸出值為0.9441,而對應(yīng)數(shù)字8的結(jié)點(diǎn)上的輸出值為0.3646,說明數(shù)字8的可能性,但是沒有數(shù)字9的可能性大。

經(jīng)過多次試驗(yàn)比對,trainbr最符合本文所述識別訓(xùn)練算法,識別結(jié)果高度符合且準(zhǔn)確,和其它幾種算法相比,雖然多占一些運(yùn)行內(nèi)存,但訓(xùn)練收斂時(shí)間卻是相對比較短的。

4 結(jié)論

在Matlab中使用newff函數(shù)創(chuàng)建神經(jīng)網(wǎng)絡(luò)對象時(shí),對于如本文類似的識別問題(訓(xùn)練數(shù)據(jù)少),要注意將divideFcn置于空,不對訓(xùn)練集進(jìn)行劃分。通過對多種常見的訓(xùn)練函數(shù)進(jìn)行實(shí)驗(yàn)和比較,最后確定了trainbr(貝葉斯規(guī)則法)作為本文的數(shù)字分類的訓(xùn)練方法效果最優(yōu),識別準(zhǔn)確率高,另外通過本文實(shí)驗(yàn)也驗(yàn)證了trainbr算法的泛化能力強(qiáng)的特點(diǎn)。

圖6:trainbr訓(xùn)練數(shù)據(jù)均方誤差曲線

猜你喜歡
隱層測試數(shù)據(jù)結(jié)點(diǎn)
基于RDPSO結(jié)構(gòu)優(yōu)化的三隱層BP神經(jīng)網(wǎng)絡(luò)水質(zhì)預(yù)測模型及應(yīng)用
測試數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
Ladyzhenskaya流體力學(xué)方程組的確定模與確定結(jié)點(diǎn)個(gè)數(shù)估計(jì)
基于自適應(yīng)粒子群優(yōu)化算法的測試數(shù)據(jù)擴(kuò)增方法
空間co-location挖掘模式在學(xué)生體能測試數(shù)據(jù)中的應(yīng)用
基于近似結(jié)構(gòu)風(fēng)險(xiǎn)的ELM隱層節(jié)點(diǎn)數(shù)優(yōu)化
最優(yōu)隱層BP神經(jīng)網(wǎng)絡(luò)的滾動(dòng)軸承故障診斷
基于Raspberry PI為結(jié)點(diǎn)的天氣云測量網(wǎng)絡(luò)實(shí)現(xiàn)
BP神經(jīng)網(wǎng)絡(luò)隱層單元數(shù)確定方法
影響《標(biāo)準(zhǔn)》測試數(shù)據(jù)真實(shí)性的因素及破解策略
同仁县| 贞丰县| 柏乡县| 台山市| 龙江县| 黄冈市| 平湖市| 尉犁县| 井冈山市| 平山县| 白城市| 织金县| 敦化市| 连州市| 弥渡县| 疏附县| 新绛县| 铅山县| 谷城县| 山东省| 沁水县| 舒城县| 赣州市| 阿鲁科尔沁旗| 宜昌市| 额济纳旗| 陆良县| 塔河县| 定西市| 四川省| 河津市| 吉安县| 台江县| 繁峙县| 泸州市| 新乐市| 延津县| 云阳县| 新津县| 溆浦县| 陆丰市|