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为真实值,*为预测值');%作图