Elman神经网络

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

 

posted @ 2017-05-07 19:36  右丶羽  阅读(13883)  评论(0编辑  收藏  举报