RNN(神经网络)

news2024/9/21 20:35:14

目录

介绍: 

数据: 

 模型:

预测:

介绍: 

RNN,全称为循环神经网络(Recurrent Neural Network),是一种深度学习模型,它主要用于处理和分析序列数据。与传统的前馈神经网络不同,RNN具有循环连接,允许信息在网络中进行循环传递。

RNN的特点在于它可以利用前面的输入信息来影响当前的输出,从而捕捉序列数据中的时序关系。这使得它在处理语音识别、自然语言处理、机器翻译等任务时表现出色。

RNN的核心思想是将前一个时间步的输出作为当前时间步的输入,从而在神经网络中引入了记忆机制。这种记忆机制使得RNN可以处理任意长度的序列数据,并且能够对序列中的每个元素做出预测或生成。

然而,RNN在处理长序列时容易出现梯度消失或梯度爆炸的问题,导致模型无法有效学习长期依赖关系。为了解决这个问题,研究者提出了许多改进的RNN变体,如长短期记忆网络(LSTM)和门控循环单元(GRU)等。

总而言之,RNN是一种用于处理序列数据的神经网络模型,它的循环连接和记忆机制使得它能够捕捉序列中的时序关系,并在语音识别、自然语言处理等任务中取得了显著的成果。

LSTM,全称为长短期记忆网络(Long Short-Term Memory),是一种循环神经网络(RNN)的改进型结构,旨在解决传统RNN在处理长序列时可能出现的梯度消失或梯度爆炸问题。

LSTM的核心思想是引入了称为“门”的机制,以控制信息的流动和遗忘。具体来说,LSTM包含了三个关键的门:输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。

输入门负责决定当前输入信息中哪些部分应该被保留下来,遗忘门负责决定前一个时间步的记忆中哪些信息应该被遗忘,输出门负责决定当前时间步的输出。

通过这些门的控制机制,LSTM能够有效地处理长期依赖关系,并且可以在需要的时候保留关键信息,遗忘不重要的信息。

LSTM模型在自然语言处理、机器翻译、语音识别等任务中被广泛使用,取得了显著的效果。它的设计思想也启发了其他一些门控型循环神经网络结构,比如门控循环单元(GRU)。

总而言之,LSTM是一种改进的循环神经网络结构,通过引入门控机制,解决了传统RNN模型中的梯度消失和梯度爆炸问题,能够有效地处理长序列和长期依赖关系。

数据: 

from numpy import sqrt
from numpy import asarray
from pandas import read_csv
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import LSTM
# load the dataset 汽车销售数据集
df = read_csv('monthly-car-sales.csv', header=0, index_col=0, squeeze=True)

 

# split a univariate sequence into samples 拆分数据集,每n_steps个预测下一个月的销售量
def split_sequence(sequence, n_steps):
	X, y = list(), list()
	for i in range(len(sequence)):
		# find the end of this pattern
		end_ix = i + n_steps
		# check if we are beyond the sequence
		if end_ix > len(sequence)-1:
			break
		# gather input and output parts of the pattern
		seq_x, seq_y = sequence[i:end_ix], sequence[end_ix]
		X.append(seq_x)
		y.append(seq_y)
	return asarray(X), asarray(y)

# retrieve the values
#values = df.values.astype('float32')
values = df.values

# specify the window size
n_steps = 5
# split into samples
X, y = split_sequence(values, n_steps)

# reshape into [samples, timesteps, features]
X = X.reshape((X.shape[0], X.shape[1],1))


# split into train/test
n_test = 12
X_train, X_test, y_train, y_test = X[:-n_test], X[-n_test:], y[:-n_test], y[-n_test:]

 模型:

# define model
model = Sequential()
model.add(LSTM(100, activation='relu', kernel_initializer='he_normal', input_shape=(n_steps,1)))
model.add(Dense(50, activation='relu', kernel_initializer='he_normal'))
model.add(Dense(50, activation='relu', kernel_initializer='he_normal'))
model.add(Dense(1))
# compile the model
model.compile(optimizer='adam', loss='mse', metrics=['mae'])

# fit the model
model.fit(X_train, y_train, epochs=350, batch_size=32, verbose=1, validation_data=(X_test, y_test))

# evaluate the model
mse, mae = model.evaluate(X_test, y_test, verbose=1)
'''结果:1/1 [==============================] - 0s 53ms/step - loss: 9514635.0000 - mae: 2585.3484'''

预测:

print('MSE: %.3f, RMSE: %.3f, MAE: %.3f' % (mse, sqrt(mse), mae))
# make a prediction
row = asarray([18024.0, 16722.0, 14385.0, 21342.0, 17180.0]).reshape((1, n_steps, 1))
yhat = model.predict(row)
print('Predicted: %.3f' % (yhat))

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

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

相关文章

Python入门:生成器迭代器

一、列表生成式 现在有个需求,列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现?你可能会想到2种方式 二逼青年版 1 2 3 4 a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] b [] for i in a:b.append(i1) print(b) …

如果通过浏览器调试?

背景:博主是一个有丰富经验的后端开发人员,在前端开发中感觉总是有种力不从心的感觉,因为没有后端debug调试的清晰感。 解决办法:掌握chorm浏览器调试技巧。 F12, F5 打上断点之后,这不就是梦寐之中的调试…

Linux驱动 SPI子系统

1、SPI协议 SPI(Serial Peripheral Interface)是一种同步串行数据通信协议,通常用于连接微控制器和外部设备,如传感器、存储器、显示器等。SPI协议使用四根线进行通信,包括时钟线(SCLK)、数据输…

第十二篇【传奇开心果系列】Python的OpenCV技术点案例示例:视频流处理

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例短博文系列短博文目录一、前言二、视频流处理介绍三、实时视频流处理示例代码四、视频流分析示例代码五、归纳总结系列短博文目录 Python的OpenCV技术点案例示例短博文系列 短博文目录 一、前言 OpenCV视频…

【面试官问】Redis 持久化

目录 【面试官问】Redis 持久化 Redis 持久化的方式RDB(Redis DataBase)AOF(Append Only File)混合持久化:RDB + AOF 混合方式的持久化持久化最佳方式控制持久化开关主从部署使用混合持久化使用配置更高的机器参考文章所属专区

OfficeWeb365 Readfile 任意文件读取漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

Qt|实现时间选择小功能

在软件开发过程中,QtDesigner系统给出的控件很多时候都无法满足炫酷的效果,前一段时间需要用Qt实现选择时间的小功能,今天为大家分享一下! 首先看一下时间效果吧! 如果有需要继续往下看下去哟~ 功能 1:开…

池化技术的总结

文章目录 1.什么是池化技术2.池化技术的应用一、连接池二、线程池三、内存池 3.池化技术的总结 1.什么是池化技术 池化技术指的是提前准备一些资源,在需要时可以重复使用这些预先准备的资源。 在系统开发过程中,我们经常会用到池化技术。通俗的讲&am…

xlsx xlsx-style 使用和坑记录

1 安装之后报错 npm install xlsx --savenpm install xlsx-style --save Umi运行会报错 自己代码 import XLSX from "xlsx"; import XLSXStyle from "xlsx-style";const data [["demo1","demo2","demo3","demo4&quo…

电路设计(9)——八路智力抢答器的proteus仿真

1.设计要求 运用模拟电路、数字电路知识,设计、制作一个8路智力竞赛抢答器,要求有优先锁存、数显、声响及复位电路。 主要元器件:CD4511,IN4148,共阴数码管,NPN三极管9013,NE555,喇叭…

在工业制造方面,如何更好地实现数字化转型?

实现工业制造的数字化转型涉及利用数字技术来增强流程、提高效率并推动创新。以下是工业制造领域更好实现数字化转型的几个关键步骤: 1.定义明确的目标: 清楚地概述您的数字化转型目标。确定需要改进的领域,例如运营效率、产品质量或供应链…

[SWPUCTF 2021 新生赛]Do_you_know_http

我们看到它让我们用WLLM浏览器登录 那我们修改User-Agent的值即可 发现有一个a.php的我们进入该目录 它提示我们不在本地服务器上 发现有一个/secretttt.php的目录 我进入即可获得flag

Netflix Mac(奈飞mac客户端) v2.13.0激活版

Clicker for Netflix Mac版是一款适用于Mac的最佳独立Netflix播放器,具有直接从从Dock启动Netflix,从触摸栏控制Netflix,支持画中画等多种功能,让你拥有更好的观看体验。 软件特色 •直接从Dock启动Netflix •从触摸栏控制Netflix…

何以穿越产业周期?解读蓝思科技2023年增长密码

1月30日晚,蓝思科技发布了2023年业绩预告,2023年预计实现归母净利润29.38亿元-30.60亿元,同比增长20%-25%。 松果财经注意到,蓝思科技通过垂直整合,构筑了更具竞争力的产业链条。一方面,公司打造了包含ODM…

[349. 两个数组的交集](C语言)(两种解法:双指针+排序,哈希)

✨欢迎来到脑子不好的小菜鸟的文章✨ 🎈创作不易,麻烦点点赞哦🎈 所属专栏:刷题 我的主页:脑子不好的小菜鸟 文章特点:关键点和步骤讲解放在 代码相应位置 前提: 看本文章之前,建…

php微信退款:订单金额或退款金额与之前请求不一致,请核实后再试问题

bug出现情况&#xff1a; 微信支付退款 解决方案 php将float转换成int类型&#xff0c;在要转换的变量之前加上用括号括起来的目标类型 <?php $a 16.90; echo (int)($a * 100); echo "<br/>"; echo (int)strval($a * 100);

2024年土木工程与环境科学国际会议(ICCEES2024)

2024年土木工程与环境科学国际会议(ICCEES2024) 会议简介 土木工程与环境科学是国民经济中的基础性、先导性、战略性产业&#xff0c;本次会议主要围绕土木工程与环保科学等研究领域&#xff0c;旨在吸引土木工程与生态环境工程专家学者、科技人员、&#xff0c;为广大工程师…

SSL证书的验证过程

HTTPS是工作于SSL层之上的HTTP协议&#xff0c;SSL&#xff08;安全套接层&#xff09;工作于TCP层之上&#xff0c;向应用层提供了两个基本安全服务&#xff1a;认证和保密。SSL有三个子协议&#xff1a;握手协议&#xff0c;记录协议和警报协议。其中握手协议实现服务器与客户…

嵌入式学习第十六天!(Linux文件查看、查找命令、标准IO)

Linux软件编程 1. Linux&#xff1a; 操作系统的内核&#xff1a; 1. 管理CPU 2. 管理内存 3. 管理硬件设备 4. 管理文件系统 5. 任务调度 2. Shell&#xff1a; 1. 保护Linux内核&#xff08;用户和Linux内核不直接操作&#xff0c;通过操作Shell&#xff0c;Shell和内核交互…

AES加密原理

AES是一个迭代的、分组密码加密方式&#xff0c;可以使用128 、192和256位密钥。与 公共密钥密码使用密钥对不同&#xff0c;对称密钥密码使用相同的密钥加密和解密数据。 通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结 构&#xff0c;在该循环中重…