23.ELman神经网络预测数据

news2024/11/27 19:54:23

1.简述

      学习目标:ELman神经网络预测数据

Elman网络介绍
神经网络是一个庞大的体系和概念,根据处理信息的不同方式来区分不同的network。比如根据处理信息结果的传递方向,分前馈型与反馈型。前馈型网络会根据输出数值来调整网络的参数,反馈型网络的输入会存在输入或者输出数值的反馈,可以对运算处理过程不断地进行优化。网络的反馈形式决定了网络的动态运算特点,递归神经网络ELMAN和前面所介绍的三层BP神经网络相比,增加了一个承接层,可以理解成延时算子,作用是让网络存在记忆功能,更好地适应数据输入的动态变化。

Elman结构组成

ELMAN的构造分为四层神经元:输入层、隐含层、承接层以及输出层(在使用智能算法优化ELMAN的参数时,理解ELMAN的结构将有所帮助)。

a). 输入层、输出层的神经元节点个数:
输入层的神经元数量与输入数据特征的维数是相等的,输出层的神经元节点数量也等同于输出数据标签的维度,这与BP神经网络一样。

b). 隐含层的神经元节点个数:
不管在BP还是ELMAN,或者其他的神经网络,隐含层的神经元个数都不是固定的。如果选择的隐含层神经元个数较少时,就会导致网络的学习程度减小甚至无法学习。节点个数较多时,则会导致网络训练的过程变慢,也很难得出预计的情况。只有当隐含层神经元数量只有控制在一个合理的范围内,才能使得网络模型好的进行学习运算。
通常的做法是根据以下公式来推出隐含层节点数目的范围,在范围之内根据训练误差最小(分类问题则取准确率最高或者误差率最低)的原则来确定最佳的隐含层节点数目。
 

c). 承接层的神经元节点个数:
承接层也叫做上下文层和状态层,主要功能是用来记忆隐含层上一个时间点的输出数值。所以承接层的神经元个数与隐含层相同,确定方法为:先根据训练误差最小确定最佳的隐含层神经元节点,再得到承接层的神经元节点个数。

建立ELMAN神经网络的步骤
1.读取数据
2. 划分训练集、测试集
3. 数据归一化
4. 获取输入层节点、输出层节点个数
5. 确定网络层与层之间的传递函数和训练算法
6. 构建最佳隐含层节点(承接层节点)的ELMAN神经网络
7. 训练网络
8. 网络测试
9. 对ELMAN的预测值与实际值进行误差分析
10. 打印预测结果和误差表格
 

2.代码

data=[0.4 0.5 0.5 0.45;0.5 0.56 0.54 0.45;0.4 0.5 0.5 0.45;0.5 0.56 0.54 0.45;0.5 0.56 0.54 0.45;0.4 0.5 0.5 0.75;0.5 0.46 0.54 0.45]
net=[];
for i=1:4
P=[data(1:3,i),data(2:4,i),data(3:5,i)];
T=[data(4,i),data(5,i),data(6,i)];
th1=[0,1;0,1;0,1];
th2=[0,1];
net{i}=newelm(th1,th2,[20,1]);
net{i}=init(net{i});
net{i}=train(net{i},P,T);
test_p{i}=data(4:6,i);
y(i)=sim(net{i},test_p{i});
end
fprintf('真实值:\n');
disp(data(7,:));
fprintf('预测值:\n');
disp(y);
fprintf('误差:\n');
disp((y-data(7,:))./y);

3.运行结果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LangChain 中文入门教程

为了便于阅读,已生成gitbook:LangChain 中文入门教程 - LangChain 的中文入门教程 github地址:https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide 加了个 CHANGELOG,更新了新的内容我会写在这里,方便之前看…

2023-06-19 Untiy进阶 C#知识补充2——C#版本与Unity的关系

文章目录 一、Unity 与 C# 版本二、Unity 的 .Net API 兼容级别 一、Unity 与 C# 版本 Unity 版本C# 版本Unity 2021.2C# 9Unity 2020.3C# 8Unity 2019.4C# 7.3Unity 2017C# 6Unity 5.5C# 4 ​ 更多信息可以在 Unity 官网说明查看:Unity - Manual: C# compiler (u…

Git的使用方法

文章目录 Git简介Git用法上传到gitee上 Git简介 简单来说,Git就像一个日志一样,可以帮你记录你对文本文件的修改,但他的功能又强于日志,不仅可以记录,还可以帮你存储那些你对文本文件的修改,当你想要找回之…

C++基础入门教程(1)

1 C初识 1.1 第一个C程序 编写一个C程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C程序的主要工具,我们先将它打开 1.1.2 创建文件 右键源文件,选择添加->新建项 给C文件起个名称&am…

亲测有效:自定义下拉头部刷新控件,任何子View都可以下拉

对于一个主Activity,里面进行多个fragment切换,不知其fragment包裹的是什么控件,但是都要进行下拉刷新,比如下拉切换语言、切换主题等场景。常见的方法,每个fragment里面都单独加下拉刷新;现在是自定义下拉…

Databend 开源周报 第 97 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 列位置 Databe…

MongoDB 数据库管理系统

MongoDB是一个非关系型数据库管理系统,它使用文档模型存储数据。MongoDB中的文档类似于JSON对象,可以包含键值对和嵌套文档。MongoDB提供了强大的查询语言、聚合框架、索引和直接在数据存储中运行的计算。 MongoDB被广泛应用于许多领域,特别…

React 组件生命周期

组件的生命周期可分成三个状态: Mounting(挂载):已插入真实 DOMUpdating(更新):正在被重新渲染Unmounting(卸载):已移出真实 DOM Mounting 挂载阶段 Mounting阶段叫挂载阶段,伴随整个虚拟DOM的声明。它里面有四个小的…

Altium Designer软件点击没有反应?如何解决?

对电子工程师来说,Altium Designer(AD)是一款功能强大的PCB设计软件,被广泛应用在电子工程领域。然而在使用过程中可能会遇见AD软件点击没有反应的情况,面对这个问题该如何解决?下面来看看吧! 1…

公网访问Linux CentOS本地搭建的Web站点

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章:Linux CentOS本地搭建…

videojs-player视频播放技术学习

介绍: videojs是一个开源的HTML5视频播放器,它可以在各种设备和浏览器上播放视频。videojs提供了丰富的API和插件,可以实现自定义的视频播放功能。 使用videojs实现视频播放的步骤: 1. 引入videojs库 在HTML文件中引入videojs库…

chatgpt赋能python:Python打开文件路径:一种更轻松的办法

Python打开文件路径: 一种更轻松的办法 在Python编程中,打开文件路径是非常常见的任务。然而,对于许多初学者,Python打开文件路径时可能会面临一些问题和困难。本篇文章将介绍Python打开文件路径的方法,并给出一种更加轻松的解决…

5-垃圾回收

目录 1.死亡对象的判断算法 1.1.引用计数算法 1.2.可达性分析算法(主流) PS:强引用、软引用、弱引用、虚引用 2.垃圾回收算法 2.1.标记-清除算法 2.2.复制算法 2.3.标记-整理算法 2.4.分代算法(主流) PS&…

达梦体系结构

物理结构、逻辑结构、实例(内存结构、进程结构) 一、物理结构 配置文件、控制文件、数据文件、重做日志文件、归档日志文件、备份文件、跟踪日志文件、事件日志文件 (一)配置文件 以.ini结尾的文件,例如dm.ini (相…

chatgpt赋能python:Python打包成so文件的方法:详解

Python打包成so文件的方法:详解 Python是一种灵活且易于使用的高级编程语言,由于其强大的效率和易于上手的特性,在最近几年已经迅速地流行起来。Python支持多种开发范式,例如函数式编程、面向对象编程和脚本编程。 Python的这些…

【UCOS-III】自我学习笔记→第20讲→时间片调度

文章目录 前言实验步骤1.复制任务创建和删除工程文件并删除task3任务,修改任务1和任务2的优先级为22.修改任务1和任务2的内容3.查看示波器现象 测试代码工程文件总结 前言 无,仅作记录,不具有参考价值,所用开发板为STM32F411RET6…

chatgpt赋能python:Python如何打开电脑摄像头

Python如何打开电脑摄像头 Python是一种易于学习和使用的编程语言,因其灵活性和强大的功能而备受欢迎。其中,许多人使用Python来处理图像处理和计算机视觉,这样,了解如何打开电脑摄像头是非常重要的。 在这篇文章中,…

【高危】crypto-js<3.2.1 存在不安全的随机性漏洞

漏洞描述 crypto-js 是一个 JavaScript 加密库,用于在浏览器和 Node.js 环境中执行加密和解密操作。 crypto-js 3.2.1 之前版本中的 secureRandom 函数通过将字符串 0. 和三位随机整数拼接的格式生成加密字符串,攻击者可通过爆破破解加密字符。 漏洞…

ASEMI代理光宝LTV-M501光耦的特点和应用领域

编辑-Z LTV-M501光耦是一种常用的光电隔离器件,具有高速、高耐压、低功耗等特点。本文将从四个方面对LTV-M501光耦进行详细阐述,包括其结构和工作原理、特点和优势、应用领域以及市场前景。通过对LTV-M501光耦的全面介绍,帮助读者更好地了解…

chatgpt赋能python:Python扩展库扩展名:了解常见的.py、.pyc、.pyd、.so、.dll

Python扩展库扩展名:了解常见的.py、.pyc、.pyd、.so、.dll 如果你是一位Python开发者,你肯定会用到各种各样的库来简化你的代码。在Python中,一个库也称为模块,使用它需要将相应的扩展库引入你的代码中。但你是否曾想过扩展库扩…