Elman神經網絡是由Jeffrey L. Elman 於1990年提出,是一種反饋神經網絡
網絡原型
網絡計算步驟:
Matlab中 關於Elman神經網絡的重要函數:
newelm()---生成一個Elman神經網絡
trains()---根據已設定的權值和閾值對網絡進行順序訓練
traingdx()---自適應學習速率動量梯度下降反向傳播訓練函數
learngdm()---動量梯度下降權值和閾值學習函數
一個簡單的例子:
% 初始化 clear ; close all; clc p=[0.4413 0.4707 0.6953 0.8133 0.4379 0.4677 0.6981 0.8002 0.4517 0.4725 0.7006 0.8201;... 0.4379 0.4677 0.6981 0.8002 0.4517 0.4725 0.7006 0.8201 0.4557 0.4790 0.7019 0.8211;... 0.4517 0.4725 0.7006 0.8201 0.4557 0.4790 0.7019 0.8211 0.4601 0.4811 0.7101 0.8298]'; %擬合輸入函數矩陣,3個樣本 每個樣本12個變量 t=[0.4557 0.4790 0.719 0.8211;0.4601 0.4811 0.7101 0.8298; 0.4612 0.4845 0.7188 0.8312]'; %擬合目標函數矩陣 P_check=[0.4557 0.4790 0.719 0.8211 0.4601 0.4811 0.7101 0.8298 0.4612 0.4845 0.7188 0.8312]';%測試網絡穩定性的數據矩陣 t1=[0.4615 0.4891 0.7201 0.8330]';%測試網絡穩定性的目標矩陣; threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];%設置每個變量的取值范圍 P_check; net=newelm(threshold,[17,4],{'tansig','purelin'});%建立網絡模型 net.trainparam.epochs=3000;%最大迭代次數3000 net.trainparam.goal=0.0001;%迭代目標誤差值 net=init(net);%初始化網絡 [net,tr]=train(net,p,t);%訓練網絡 PN=sim(net,P_check);%仿真 figure(1);%打開新窗口作圖 X=[1,2,3,4]; plot(X,PN,'r*',X,t1,'bo'); title('o為真實值,*為預測值');%作圖