matlab 神经网络设计多层隐含层_数据预测之BP神经网络具体应用以及matlab代码
1.具體應(yīng)用實(shí)例。根據(jù)表2,預(yù)測(cè)序號(hào)15的跳高成績(jī)。
表2?國(guó)內(nèi)男子跳高運(yùn)動(dòng)員各項(xiàng)素質(zhì)指標(biāo)
序號(hào)
跳高成績(jī)()
30行進(jìn)跑(s)
立定三級(jí)跳遠(yuǎn)()
助跑摸高()
助跑4—6步跳高()
負(fù)重深蹲杠鈴()
杠鈴半蹲系數(shù)
100
(s)
抓舉
()
1
2.24
3.2
9.6
3.45
2.15
140
2.8
11.0
50
2
2.33
3.2
10.3
3.75
2.2
120
3.4
10.9
70
3
2.24
3.0
9.0
3.5
2.2
140
3.5
11.4
50
4
2.32
3.2
10.3
3.65
2.2
150
2.8
10.8
80
5
2.2
3.2
10.1
3.5
2
80
1.5
11.3
50
6
2.27
3.4
10.0
3.4
2.15
130
3.2
11.5
60
7
2.2
3.2
9.6
3.55
2.1
130
3.5
11.8
65
8
2.26
3.0
9.0
3.5
2.1
100
1.8
11.3
40
9
2.2
3.2
9.6
3.55
2.1
130
3.5
11.8
65
10
2.24
3.2
9.2
3.5
2.1
140
2.5
11.0
50
11
2.24
3.2
9.5
3.4
2.15
115
2.8
11.9
50
12
2.2
3.9
9.0
3.1
2.0
80
2.2
13.0
50
13
2.2
3.1
9.5
3.6
2.1
90
2.7
11.1
70
14
2.35
3.2
9.7
3.45
2.15
130
4.6
10.85
70
15
3.0
9.3
3.3
2.05
100
2.8
11.2
50
4.4(序號(hào)15)跳高成績(jī)預(yù)測(cè)
4.4.1?數(shù)據(jù)整理
1)我們將前14組國(guó)內(nèi)男子跳高運(yùn)動(dòng)員各項(xiàng)素質(zhì)指標(biāo)作為輸入,即(30m行進(jìn)跑,立定三級(jí)跳遠(yuǎn),助跑摸高,助跑4-6步跳高,負(fù)重深蹲杠鈴,杠鈴半蹲系數(shù),100m,抓舉),將對(duì)應(yīng)的跳高成績(jī)作為輸出。并用matlab自帶的premnmx()函數(shù)將這些數(shù)據(jù)歸一化處理。
數(shù)據(jù)集:(注意:每一列是一組輸入訓(xùn)練集,行數(shù)代表輸入層神經(jīng)元個(gè)數(shù),列數(shù)輸入訓(xùn)練集組數(shù))
P=[3.2?3.2?3?3.2?3.2?3.4?3.2?3?3.2?3.2?3.2?3.9?3.1?3.2;
9.6?10.3?9?10.3?10.1?10?9.6?9?9.6?9.2?9.5?9?9.5?9.7;
3.45?3.75?3.5?3.65?3.5?3.4?3.55?3.5?3.55?3.5?3.4?3.1?3.6?3.45;
2.15?2.2?2.2?2.2?2?2.15?2.14?2.1?2.1?2.1?2.15?2?2.1?2.15;
140?120?140?150?80?130?130?100?130?140?115?80?90?130;
2.8?3.4?3.5?2.8?1.5?3.2?3.5?1.8?3.5?2.5?2.8?2.2?2.7?4.6;
11?10.9?11.4?10.8?11.3?11.5?11.8?11.3?11.8?11?11.9?13?11.1?10.85;
50?70?50?80?50?60?65?40?65?50?50?50?70?70];
T=[2.24?2.33?2.24?2.32?2.2?2.27?2.2?2.26?2.2?2.24?2.24?2.2?2.2?2.35];
4.4.2?模型建立
4.4.2.1BP網(wǎng)絡(luò)模型
BP網(wǎng)絡(luò)(Back-ProPagation?Network)又稱反向傳播神經(jīng)網(wǎng)絡(luò),?通過樣本數(shù)據(jù)的訓(xùn)練,不斷修正網(wǎng)絡(luò)權(quán)值和閾值使誤差函數(shù)沿負(fù)梯度方向下降,逼近期望輸出。它是一種應(yīng)用較為廣泛的神經(jīng)網(wǎng)絡(luò)模型,多用于函數(shù)逼近、模型識(shí)別分類、數(shù)據(jù)壓縮和時(shí)間序列預(yù)測(cè)等。
BP網(wǎng)絡(luò)由輸入層、隱層和輸出層組成,隱層可以有一層或多層,圖2是m×k×n的三層BP網(wǎng)絡(luò)模型,網(wǎng)絡(luò)選用S型傳遞函數(shù),
通過反傳誤差函數(shù)
(?(Ti為期望輸出、Oi為網(wǎng)絡(luò)的計(jì)算輸出),不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)值和閾值使誤差函數(shù)E達(dá)到極小。
BP網(wǎng)絡(luò)具有高度非線性和較強(qiáng)的泛化能力,但也存在收斂速度慢、迭代步數(shù)多、易于陷入局部極小和全局搜索能力差等缺點(diǎn)。可以先用遺傳算法對(duì)“BP網(wǎng)絡(luò)”進(jìn)行優(yōu)化在解析空間找出較好的搜索空間,再用BP網(wǎng)絡(luò)在較小的搜索空間內(nèi)搜索最優(yōu)解。
4.4.2.2模型求解
4.4.2.2.1?網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
1)?輸入輸出層的設(shè)計(jì)
該模型由每組數(shù)據(jù)的各項(xiàng)素質(zhì)指標(biāo)作為輸入,以跳高成績(jī)作為輸出,所以輸入層的節(jié)點(diǎn)數(shù)為8,輸出層的節(jié)點(diǎn)數(shù)為1。
2)?隱層設(shè)計(jì)
有關(guān)研究表明,有一個(gè)隱層的神經(jīng)網(wǎng)絡(luò),只要隱節(jié)點(diǎn)足夠多,就可以以任意精度逼近一個(gè)非線性函數(shù)。因此,本文采用含有一個(gè)隱層的三層多輸入單輸出的BP網(wǎng)絡(luò)建立預(yù)測(cè)模型。在網(wǎng)絡(luò)設(shè)計(jì)過程中,隱層神經(jīng)元數(shù)的確定十分重要。隱層神經(jīng)元個(gè)數(shù)過多,會(huì)加大網(wǎng)絡(luò)計(jì)算量并容易產(chǎn)生過度擬合問題;神經(jīng)元個(gè)數(shù)過少,則會(huì)影響網(wǎng)絡(luò)性能,達(dá)不到預(yù)期效果。網(wǎng)絡(luò)中隱層神經(jīng)元的數(shù)目與實(shí)際問題的復(fù)雜程度、輸入和輸出層的神經(jīng)元數(shù)以及對(duì)期望誤差的設(shè)定有著直接的聯(lián)系。目前,對(duì)于隱層中神經(jīng)元數(shù)目的確定并沒有明確的公式,只有一些經(jīng)驗(yàn)公式,神經(jīng)元個(gè)數(shù)的最終確定還是需要根據(jù)經(jīng)驗(yàn)和多次實(shí)驗(yàn)來確定。本文在選取隱層神經(jīng)元個(gè)數(shù)的問題上參照了以下的經(jīng)驗(yàn)公式:
其中,?n為輸入層神經(jīng)元個(gè)數(shù),?m為輸出層神經(jīng)元個(gè)數(shù),?a為[?1,?10]之間的常數(shù)。
根據(jù)上式可以計(jì)算出神經(jīng)元個(gè)數(shù)為4-13個(gè)之間,在本次實(shí)驗(yàn)中選擇隱層神經(jīng)元個(gè)數(shù)為6.
網(wǎng)絡(luò)結(jié)構(gòu)示意圖如下:
4.4.2.2.2?激勵(lì)函數(shù)的選取
BP神經(jīng)網(wǎng)絡(luò)通常采用Sigmoid可微函數(shù)和線性函數(shù)作為網(wǎng)絡(luò)的激勵(lì)函數(shù)。本文選擇S型正切函數(shù)tansig作為隱層神經(jīng)元的激勵(lì)函數(shù)。而由于網(wǎng)絡(luò)的輸出歸一到[?-1,?1]范圍內(nèi),因此預(yù)測(cè)模型選取S型對(duì)數(shù)函數(shù)tansig作為輸出層神經(jīng)元的激勵(lì)函數(shù)。
4.4.2.2.3?模型的實(shí)現(xiàn)
此次預(yù)測(cè)選用MATLAB中的神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行網(wǎng)絡(luò)的訓(xùn)練,預(yù)測(cè)模型的具體實(shí)現(xiàn)步驟如下:
將訓(xùn)練樣本數(shù)據(jù)歸一化后輸入網(wǎng)絡(luò),設(shè)定網(wǎng)絡(luò)隱層和輸出層激勵(lì)函數(shù)分別為tansig和logsig函數(shù),網(wǎng)絡(luò)訓(xùn)練函數(shù)為traingdx,網(wǎng)絡(luò)性能函數(shù)為mse,隱層神經(jīng)元數(shù)初設(shè)為6。設(shè)定網(wǎng)絡(luò)參數(shù)。網(wǎng)絡(luò)迭代次數(shù)epochs為5000次,期望誤差goal為0.00000001,?學(xué)習(xí)速率lr為0.?01。設(shè)定完參數(shù)后,開始訓(xùn)練網(wǎng)絡(luò)。
該網(wǎng)絡(luò)通過24次重復(fù)學(xué)習(xí)達(dá)到期望誤差后則完成學(xué)習(xí)。詳細(xì)代碼見附錄。
網(wǎng)絡(luò)訓(xùn)練完成后,只需要將各項(xiàng)素質(zhì)指標(biāo)輸入網(wǎng)絡(luò)即可得到預(yù)測(cè)數(shù)據(jù)。
預(yù)測(cè)結(jié)果為:2.20
matlab代碼:
?P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2;
9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 9.5 9 9.5 9.7;
3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45;
2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1 2.15 2 2.1 2.15;
140 120 140 150 80 130 130 100 130 140 115 80 90 130;
2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6;
11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11 11.9 13 11.1 10.85;
50 70 50 80 50 60 65 40 65 50 50 50 70 70];
?T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35];
?[p1,minp,maxp,t1,mint,maxt]=premnmx(P,T);
?%創(chuàng)建網(wǎng)絡(luò)
?net=newff(minmax(P),[8,6,1],{'tansig','tansig','purelin'},'trainlm');
?%設(shè)置訓(xùn)練次數(shù)
?net.trainParam.epochs = 5000;
?%設(shè)置收斂誤差
?net.trainParam.goal=0.0000001;
?%訓(xùn)練網(wǎng)絡(luò)
?[net,tr]=train(net,p1,t1);
TRAINLM, Epoch 0/5000, MSE 0.533351/1e-007, Gradient 18.9079/1e-010
TRAINLM, Epoch 24/5000, MSE 8.81926e-008/1e-007, Gradient 0.0022922/1e-010
TRAINLM, Performance goal met.
?%輸入數(shù)據(jù)
?a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
?%將輸入數(shù)據(jù)歸一化
?a=premnmx(a);
?%放入到網(wǎng)絡(luò)輸出數(shù)據(jù)
?b=sim(net,a);
?%將得到的數(shù)據(jù)反歸一化得到預(yù)測(cè)數(shù)據(jù)
?c=postmnmx(b,mint,maxt);
?c
c =
2.2003
總結(jié)
以上是生活随笔為你收集整理的matlab 神经网络设计多层隐含层_数据预测之BP神经网络具体应用以及matlab代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 下tomcat服务每天定时启
- 下一篇: matlab 数据是否符合正态分布的判断