日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elman神经网络介绍以及Matlab实现

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elman神经网络介绍以及Matlab实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Elman神經網絡介紹

1.特點
Elman神經網絡是一種典型的動態遞歸神經網絡,它是在BP網絡基本結構的基礎上,在隱含層增加一個承接層,作為一步延時算子,達到記憶的目的,從而使系統具有適應時變特性的能力,增強了網絡的全局穩定性,它比前饋型神經網絡具有更強的計算能力,還可以用來解決快速尋優問題。
2.結構
Elman神經網絡是應用較為廣泛的一種典型的反饋型神經網絡模型。一般分為四層:輸入層、隱層、承接層和輸出層。其輸入層、隱層和輸出層的連接類似于前饋網絡。輸入層的單元僅起到信號傳輸作用,輸出層單元起到加權作用。隱層單元有線性和非線性兩類激勵函數,通常激勵函數取Signmoid非線性函數。而承接層則用來記憶隱層單元前一時刻的輸出值,可以認為是一個有一步遲延的延時算子。隱層的輸出通過承接層的延遲與存儲,自聯到隱層的輸入,這種自聯方式使其對歷史數據具有敏感性,內部反饋網絡的加入增加了網絡本身處理動態信息的能力,從而達到動態建模的目的。其結構圖如下圖1所示,

其網絡的數學表達式為:



其中,y為m維輸出節點向量;x為n維中間層節點單元向量;u為r維輸入向量;為n維反饋狀態向量;為中間層到輸出層連接權值;為輸入層到中間層連接權值;為承接層到中間層連接權值;g()為輸出神經元的傳遞函數,是中間層輸出的線性組合;f()為中間層神經元的傳遞函數,常采用S函數。
3.與BP網絡的區別
它是動態反饋型網絡,它能夠內部反饋、存儲和利用過去時刻輸出信息,既可以實現靜態系統的建模,還能實現動態系統的映射并直接反應系統的動態特性,在計算能力及網絡穩定性方面都比BP神經網絡更勝一籌。
4.缺點
與BP神經網絡一樣,算法都是采用基于梯度下降法,會出現訓練速度慢和容易陷入局部極小點的缺點,對神經網絡的訓練較難達到全局最優。

基于Matlab實現Elman神經網絡

在MATLAB中,Elman神經網絡可以通過調用newelm()實現。
**例子:**利用Elman神經網絡實現MATLAB的數據預測。

%輸入數據 P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2; 9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2; 3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5; 2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1; 140 120 140 150 80 130 130 100 130 140; 2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5; 11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11; 50 70 50 80 50 60 65 40 65 50 ]; %訓練數據 T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24];%訓練輸出實際值 TestInput=[3.2 3.9 3.1 3.2 3.0; 9.5 9 9.5 9.7 9.3; 3.4 3.1 3.6 3.45 3.3; 2.15 2 2.1 2.15 2.05; 115 80 90 130 100; 2.8 2.2 2.7 2.6 2.8; 11.9 13 11.1 10.85 11.2; 50 50 70 70 50];%測試數據 TestOutput=[2.24 2.2 2.2 2.35 2.2]; %測試輸出實際值[pn,minp,maxp,tn,mint,maxt]=premnmx(P,T); p2= tramnmx(TestInput,minp,maxp); %創建Elman神經網絡 net_1 = newelm(minmax(pn),[8,1],{'tansig','purelin'},'traingdm'); %設置訓練參數 net_1.trainParam.show = 50; net_1.trainParam.lr = 0.01; net_1.trainParam.mc = 0.9; net_1.trainParam.epochs =10000; net_1.trainParam.goal = 1e-3; net=init(net_1);%初始化網絡 %訓練網絡 net = train(net,pn,tn); %使用訓練好的網絡,自定義輸入 PN = sim(net,p2); TestResult= postmnmx(PN,mint,maxt);%仿真值反歸一化 %理想輸出與訓練輸出的結果進行比較 E =TestOutput - TestResult %計算誤差 MSE=mse(E);%計算均方誤差 figure(1) plot(TestOutput,'bo-'); hold on; plot(TestResult,'r*--'); legend('真實值','預測值'); save('Elman.mat','net');

運行結果如下:


誤差結果為:
E =[0.48% 0.40% 0.12% 9.47% 2.28%]
平均誤差為:2.55%

轉載請標明出處,謝謝!。

如果感覺本文對您有幫助,請留下您的贊,您的支持是我堅持寫作最大的動力,謝謝!

總結

以上是生活随笔為你收集整理的Elman神经网络介绍以及Matlab实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。