RNN(神经网络)

目录

介绍: 

数据: 

 模型:

预测:

介绍: 

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 patternend_ix = i + n_steps# check if we are beyond the sequenceif end_ix > len(sequence)-1:break# gather input and output parts of the patternseq_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.hqwc.cn/news/451415.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HiveSQL题——collect_set()/collect_list()聚合函数

一、collect_set() /collect_list()介绍 collect_set()函数与collect_list()函数属于高级聚合函数(行转列),将分组中的某列转换成一个数组返回,常与concat_ws()函数连用实现字段拼接效果。 collect_list:收集并形成lis…

GPT3.5\GPT4系列计算完整prompt token数的官方方法

前言: ChatGPT如何计算token数?https://wtl4it.blog.csdn.net/article/details/135116493?spm1001.2014.3001.5502https://wtl4it.blog.csdn.net/article/details/135116493?spm1001.2014.3001.5502 GPT3.5\GPT4系列计算完整prompt token数的官方方法&#xff1…

集成阿里云短信服务

目的是集成阿里云短信服务,完成验证码的发送和接收。 目 录 1、开通阿里云短信服务 2、申请签名 3、申请模板 4、获取AccessKey 5、代码实现 6、代码扩展 7、总结 1、开通阿里云短信服务 去阿里云官网开通 2、申请签名 进行整个步骤时,可以先…

XUbuntu22.04之如何创建、切换多个工作区(二百零九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

项目02《游戏-05-开发》Unity3D

基于 项目02《游戏-04-开发》Unity3D , 【任务】UI背包系统, 首先将Game窗口设置成1920 * 1080, 设置Canvas的缩放模式,:这样设置能让窗口在任意分辨率下都以一个正确的方式显示, 设置数值&…

Grafana实现在同一个面板中多个query应用不同的Data source

目的:实现在同一个面板中多个query应用不同的Data source如下图: 目前A、B都应用的是prometheus源,实现A、B两个query可以应用不同的Data source源 1.添加多个源: 2.点击需要应用多个源的面板,选择上面的设置按钮。 …

2024美赛C题完整解题教程及代码 网球运动的势头

2024 MCM Problem C: Momentum in Tennis (网球运动的势头) 注:在网球运动中,"势头"通常指的是比赛中因一系列事件(如连续得分)而形成的动力或趋势,这可能对比赛结果产生重要影响。球…

【Android】RxJava系列01-基本概述和基本用法

少年啊,要永远相信美好的事情即将发生 【Android】RxJava系列01-基本概述和基本用法 1.RxJava的概述2.RxJava的作用3.观察者和被观察者4.背压5.RxJava的基本用法步骤一,创建Observer(观察者)步骤二,创建Observable&…

【C++】类和对象之运算符重载(三)

前言:在前面我们知道在类和对象中有六个默认成员函数,并学习了其中三个构造函数、析构函数、拷贝构造函数,今天我们将进一步的学习.赋值运算符重载。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质…

【API接口】制造企业,电商API接口面临的一道难题——数据采集

数据采集一直是困扰着所有制造工厂的传统痛点,自动化设备品牌类型繁多,厂家和数据接口各异,国外厂家本地支持有限,不同采购年代。即便产量停机数据自动采集了,也不等于整个制造过程数据都获得了,只要还有其…

计算机网络_1.6.2 计算机网络体系结构分层的必要性

1.6.2 计算机网络体系结构分层的必要性 一、五层原理体系结构每层各自主要解决什么问题1、物理层2、数据链路层3、网络层4、运输层5、应用层 二、总结三、练习 笔记来源: B站 《深入浅出计算机网络》课程 本节主要介绍实现计算机网络需要解决哪些问题?以…

【XR806开发板试用】TCP通信测试 Ping 命令测试

1.工程准备 由于要使用wifi功能,直接从wlan_demo复制一份出来,然后修改。 源文件只留下 main.c 就可以了。 BUILD.gn文件 import("//device/xradio/xr806/liteos_m/config.gni")static_library("app_mying") {configs []sources…