当前位置:首页>编程日记>正文

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

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

发布时间:2018-06-28 19:27,

浏览次数:745

, 标签:

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%


http://www.coolblog.cn/news/6e1609a08c28d600.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐