Elman神经网络原理
Elman神经网络
近期开题,阅读到了一篇文章关于故障诊断的,其中用到了Elman神经网络,具体是结合EMD、PCA-SOM的Elman的性能评估/预测故障诊断,对Elman神经网络有点陌生,网上资源也讲的特别杂,来做个汇总Introduction吧!
介绍
Elman神经网络 是 J. L. Elman于1990年首先针对语音处理问题而提出来的,是一种典型的局部回归网络( global feed forward local recurrent)。Elman网络可以看作是一个具有局部记忆单元和局部反馈连接的递归神经网络。
Elman网络具有与多层前向网络相似的多层结构。
它的主要结构是前馈连接, 包括输入层、 隐含层、 输出层, 其连接权可以进行学习修正;反馈连接由一组“结构 ” 单元构成,用来记忆前一时刻的输出值, 其连接权值是固定的。在这种网络中, 除了普通的隐含层外, 还有一个特别的隐含层,称为关联层 (或联系单元层 ) ;该层从隐含层接收反馈信号, 每一个隐含层节点都有一个与之对应的关联层节点连接。关联层的作用是通过联接记忆将上一个时刻的隐层状态连同当前时刻的网络输入一起作为隐层的输入, 相当于状态反馈。隐层的传递函数仍为某种非线性函数, 一般为 Sigmoid函数, 输出层为线性函数, 关联层也为线性函数。
----词条来自于百度百科
Elman组成
Elman神经网络是一种典型的动态神经网络,通常有四层:输入层、中间层(隐含层)、 承接层和输出层。
输入层、隐含层和输出层的连接类似于前馈网络。
输入层的单元只传输信号,输出层的单元具有线性加权的功能。
隐层细胞的传递函数可以是线性函数,也可以是非线性函数。
承接层又称为上下文层或状态层,用于记忆隐层的前一个时间步长输出,因此可以看作是一步时间延迟算子。
Elman网络结构
带反馈的的BP网络
行程迟滞具有短期记忆功能
(Figure来自于网络)
Elman神经网络的特点是通过受体层的延迟和存储,隐层的输出与隐层的输入本身相连。这种自连接对其历史状态的数据非常敏感,内部反馈网络也增加了动态信息处理的能力,从而达到动态建模的目的。
选择用历史训练的Elman神经网络同步预测,数据流程图如下图所示。
- Elman网络学习算法
用BP算法进行权值修正,指标函数为误差平方和
Matlab实例代码
本实例是引用的《Matlab神经网络30个案例分析》中的一个,觉得很不错,就更新一下下!~
内容较为古老,直接附上了,请多担待。
电力负荷预测概述
模型建立
电力系统负荷数据
具体数据及其源代码在我的GitHub上可下载:
https://github.com/YurBro/Project-Code/tree/main/ElmanNN
Matlab Code:
%% 基于Elman神经网络的电力负荷预测模型研究
%
%
% <html>
% <table border="0" width="600px" id="table1"> <tr> <td><b><font size="2">该案例作者申明:</font></b></td> </tr> <tr> <td><span class="comment"><font size="2">1:本人长期驻扎在此<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html"><font color="#0000FF">板块</font></a>里,对<a target="_blank" href="http://www.ilovematlab.cn/thread-48362-1-1.html"><font color="#0000FF">该案例</font></a>提问,做到有问必答。</font></span></td></tr><tr> <td><span class="comment"><font size="2">2:此案例有配套的教学视频,配套的完整可运行Matlab程序。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 3:以下内容为该案例的部分内容(约占该案例完整内容的1/10)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 4:此案例为原创案例,转载请注明出处(<a target="_blank" href="http://www.ilovematlab.cn/">Matlab中文论坛</a>,<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html">《Matlab神经网络30个案例分析》</a>)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 6:您看到的以下内容为初稿,书籍的实际内容可能有少许出入,以书籍实际发行内容为准。</font></span></td> </tr><tr> <td><span class="comment"><font size="2"> 7:此书其他常见问题、预定方式等,<a target="_blank" href="http://www.ilovematlab.cn/thread-47939-1-1.html">请点击这里</a>。</font></span></td> </tr></table>
% </html>
% %% 清空环境变量clc;
clear all
close all
nntwarn off;%% 数据载入load data;
a=data;%% 选取训练数据和测试数据for i=1:6p(i,:)=[a(i,:),a(i+1,:),a(i+2,:)];
end
% 训练数据输入
p_train=p(1:5,:);
% 训练数据输出
t_train=a(4:8,:);
% 测试数据输入
p_test=p(6,:);
% 测试数据输出
t_test=a(9,:);% 为适应网络结构 做转置p_train=p_train';
t_train=t_train';
p_test=p_test';%% 网络的建立和训练
% 利用循环,设置不同的隐藏层神经元个数
nn=[7 11 14 18];
for i=1:4threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];% 建立Elman神经网络 隐藏层为nn(i)个神经元net=newelm(threshold,[nn(i),3],{'tansig','purelin'});% 设置网络训练参数net.trainparam.epochs=1000;net.trainparam.show=20;% 初始化网络net=init(net);% Elman网络训练net=train(net,p_train,t_train);% 预测数据y=sim(net,p_test);% 计算误差error(i,:)=y'-t_test;
end%% 通过作图 观察不同隐藏层神经元个数时,网络的预测效果plot(1:1:3,error(1,:),'-ro','linewidth',2);
hold on;
plot(1:1:3,error(2,:),'b:x','linewidth',2);
hold on;
plot(1:1:3,error(3,:),'k-.s','linewidth',2);
hold on;
plot(1:1:3,error(4,:),'c--d','linewidth',2);
title('Elman预测误差图')
set(gca,'Xtick',[1:3])
legend('7','11','14','18','location','best')
xlabel('时间点')
ylabel('误差')
hold off;web browser http://www.ilovematlab.cn/viewthread.php?tid=63640
%%
%
% <html>
% <table align="center" > <tr> <td align="center"><font size="2">版权所有:</font><a
% href="http://www.ilovematlab.cn/">Matlab中文论坛</a> <script
% src="http://s3.cnzz.com/stat.php?id=971931&web_id=971931&show=pic" language="JavaScript" ></script> </td> </tr></table>
% </html>
%
目前知道的关于Elman神经网络的内容就这么多,还需要再多读读Paper。
~
有新的相关内容知识,⚡必更新⚡!
~
待研究透彻之后,定给出⚡Python代码⚡!
-更新日志-
(2021.8.19只更新了个MATLAB的程序,着实丢人!!!)
~
❤坚持读Paper,坚持做笔记写Blog!❤
ღ( ´・ᴗ・` )
❤
『
我相信所有被我遗忘的美好,一定还在这世上的某个角落,也相信总有一天,走过很长的生命,遇见美好,春暖花开!
』
Elman神经网络原理相关推荐
- 神经网络原理与实例精解,神经网络计算工作原理
神经网络算法原理 4.2.1概述人工神经网络的研究与计算机的研究几乎是同步发展的. 1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Rosen ...
- Elman神经网络预测的Matlab实现
Elman神经网络的matlab实现,其中Z为原始数据. 本文选用的Elman神经网络是一种典型的局部回归网络,属于反馈神经网络,与前向神经网络非常相似,具有更强的计算能力,其突出优点是具有很强的优化 ...
- 基于灰狼算法优化的Elman神经网络数据预测
基于灰狼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于灰狼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 神经网络理论及应用答案,人工神经网络原理答案
神经网络原理及应用 神经网络原理及应用1. 什么是神经网络?神经网络是一种模拟动物神经网络行为特征,进行分布式并行信息处理的算法. 这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系, ...
- 一维卷积神经网络原理,hopfield神经网络原理
神经网络原理及应用 神经网络原理及应用1. 什么是神经网络?神经网络是一种模拟动物神经网络行为特征,进行分布式并行信息处理的算法. 这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系, ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- Elman神经网络与自适应共振网络(ART)
这几天在回过头看一些比较基础的东西,发现了两个早期研究的神经网络,Elman与ART网络,类似于上世纪80年代的hopfield神经网络,BM/RBM/DBN,RBF,SOM,以及同时期的SVM算法等 ...
最新文章
- iphone popViewControllerAnimated后刷新原先的表格
- 《c++ templates》学习笔记(9)——第十二章 特化与重载
- 一文带你全面了解电商在线支付
- Docker-Compose命令详解
- [长流支流]的专栏--《金质打印通》、《WebMIS.NET快速开发平台》,MIS/ERP开发利器...
- Mac 10.12彻底关闭Dashboard
- HTML 元素和属性--备份
- 修改smb默认端口_centos7 ssh端口更改方法
- 分享一款好看的城市选择器
- 抖音直播预告开通条件是什么?
- 自动驾驶(十五)---------再论轨迹规划
- unable to find valid certification path to requested target
- 谁在用生命为错误买单?
- 无所不能的python是如何解决程序员的终身大事的?
- 64位系统安装32位打印机驱动
- GIS 术语和缩略语
- 8086汇编 ASCII 表
- 从一文中了解SSRF的各种绕过姿势及攻击思路
- winpe如何给服务器安装系统,winpe系统安装在其他分区的详细教程
- 牛客网:乘积为正数的最长连续子数组