999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-11-16 06:01:46羅莉
電子技術(shù)與軟件工程 2019年20期
關(guān)鍵詞:實驗

文/羅莉

1 引言

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

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

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

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

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

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

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

由圖1可知訓(xùn)練數(shù)據(jù)的每個數(shù)字可用9×7的網(wǎng)格表示,用白色像素代表0,灰色像素代表1,可將網(wǎng)格表示為0或者1的長位串。位映射由左上角開始向下直到網(wǎng)格的整個一列,然后重復(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個結(jié)點,對應(yīng)上述網(wǎng)格的映射。

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

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

使用Matlab創(chuàng)建神經(jīng)網(wǎng)絡(luò)時,需要用到newff函數(shù)建立網(wǎng)絡(luò)對象,但若使用舊版本的newff函數(shù),會出現(xiàn)警告信息,這是由于使用了舊版本的newff參數(shù)列表。解決方法很簡單,就是改為新版本形式的參數(shù)列表。舊版本中第一個參數(shù)需要結(jié)合minmax()函數(shù)使用,新版本不需要了;另外新版本中不需要指定輸出層的神經(jīng)元個數(shù),改為由輸入?yún)?shù)output決定,其他參數(shù)不變。這是新舊版本創(chuàng)建神經(jīng)網(wǎng)絡(luò)方法的不同,但存在另外一個問題,即使相同的數(shù)據(jù)和參數(shù)下,新舊版本的計算結(jié)果總是不一樣,而且二者偏差很大,通常新版本的newff方法的識別率總是偏低。造成此問題的原因是新版本的神經(jīng)網(wǎng)絡(luò)函數(shù)把訓(xùn)練集分成了3份,即訓(xùn)練集train set,驗證集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)練的效果會出現(xiàn)很大的偏差。通過仔細(xì)比較新舊兩個子函數(shù),發(fā)現(xiàn)新版設(shè)置了net.divideFcn屬性,其值為'dividerand',解決辦法是在新版net中再添加一條語句:net.divideFcn=''。示例語句如下(其中X是輸入向量集,Y是目標(biāo)輸出向量集,數(shù)字20是隱層結(jié)點數(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ù)實驗比較

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

表1:不同訓(xùn)練函數(shù)實驗結(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)行多次實驗,下面給出實驗結(jié)果對照表1。

本文實驗所采用的Matlab版本為R2016b,實驗電腦CPU配置為Intel Pentium G2030 3.0GHz。

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

從表1中“測試數(shù)據(jù)識別成功率”一項可看出,只有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ù)都有一個或者多個位丟失。測試結(jié)果表明,除了8以外,所有被測數(shù)字都能夠被正確地識別。圖5數(shù)據(jù)所示,對于測試數(shù)字8,對應(yīng)數(shù)字6的結(jié)點上的輸出值為0.4513,而對應(yīng)數(shù)字8的結(jié)點上的輸出值為0.3971,表明第8個測試數(shù)據(jù)是模糊的,可能是數(shù)字6,也可能是數(shù)字8。實際上,人識別這個數(shù)字時也會發(fā)生這種錯誤;對于測試數(shù)字9,丟失的像素點較多,但人眼識別出來還是數(shù)字9的可能性最大,測試輸出的結(jié)果也是符合的,在對應(yīng)數(shù)字9的結(jié)點上的輸出值為0.9441,而對應(yīng)數(shù)字8的結(jié)點上的輸出值為0.3646,說明數(shù)字8的可能性,但是沒有數(shù)字9的可能性大。

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

4 結(jié)論

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

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

猜你喜歡
實驗
我做了一項小實驗
記住“三個字”,寫好小實驗
我做了一項小實驗
我做了一項小實驗
記一次有趣的實驗
有趣的實驗
小主人報(2022年4期)2022-08-09 08:52:06
微型實驗里看“燃燒”
做個怪怪長實驗
NO與NO2相互轉(zhuǎn)化實驗的改進(jìn)
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 伊人激情综合| 丁香亚洲综合五月天婷婷| 成年人福利视频| 91精品久久久久久无码人妻| 天堂岛国av无码免费无禁网站| 成年人视频一区二区| 欧美福利在线| 亚洲精品大秀视频| 欧美一区精品| 重口调教一区二区视频| 青青草原国产精品啪啪视频| 欧美有码在线| 中文字幕久久亚洲一区| 亚洲AV无码不卡无码| 国产在线一区视频| 欧美国产日韩另类| 亚洲精品第一在线观看视频| 久青草免费在线视频| 国产超薄肉色丝袜网站| 国产亚洲精久久久久久无码AV| 91精品国产一区自在线拍| 99久视频| 欧美激情综合一区二区| 国产丝袜91| 日韩福利在线观看| 国产成人综合日韩精品无码首页| 亚洲日本一本dvd高清| 国产白浆视频| 亚洲成人网在线播放| 欧美精品高清| 丝袜美女被出水视频一区| 久久频这里精品99香蕉久网址| 日本妇乱子伦视频| 91网红精品在线观看| 国产精品lululu在线观看| 伊人久久久大香线蕉综合直播| 亚洲精品成人福利在线电影| 国产免费自拍视频| 国产一级二级在线观看| 九色在线观看视频| 国产乱子伦手机在线| 亚洲最大福利网站| 免费精品一区二区h| 成人亚洲视频| 性做久久久久久久免费看| 国产伦片中文免费观看| 国产精品成人一区二区| 成人在线欧美| 亚洲AV电影不卡在线观看| 3344在线观看无码| 中文字幕亚洲精品2页| 精品国产欧美精品v| 四虎AV麻豆| 日本午夜精品一本在线观看| 精品午夜国产福利观看| 99热国产这里只有精品9九| 日韩在线影院| 国产精品亚洲精品爽爽| 91国内在线观看| 中文字幕在线日本| 亚洲区一区| 亚洲精品国产综合99| 国产日韩欧美中文| 亚洲高清在线播放| 国产区网址| 国产午夜精品鲁丝片| 制服丝袜一区二区三区在线| 午夜视频免费试看| 99久久亚洲精品影院| 国产不卡网| 中文字幕 91| 中文字幕色在线| 蜜桃视频一区| 福利视频99| 婷婷色丁香综合激情| 男人的天堂久久精品激情| 波多野结衣在线se| 青青青国产免费线在| 国产精品大尺度尺度视频| 18禁黄无遮挡免费动漫网站| 亚洲综合经典在线一区二区| 久久久精品无码一二三区|