6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

异常监测②——lstm时间序列预测&lstm简易原理 lstm的原理,三个门是怎样作用的,对应的公式是什么 阅读详情

 

6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

XI YANG

XI YANG

学习

59 人赞同了该文章

LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。

 

 

今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。

 

 


1. Univariate

 

 

Univariate 是指:

input 为多个时间步, output 为一个时间的问题。

数例:

训练集:
X,          y
10, 20, 30      40
20, 30, 40      50
30, 40, 50      60
…


预测输入:
X,
70, 80, 90

模型的 Keras 代码:

# define model【Vanilla LSTM】

model = Sequential()
model.add( LSTM(50,  activation='relu',  input_shape = (n_steps, n_features)) )
model.add( Dense(1) )
model.compile(optimizer='adam', loss='mse')

n_steps = 3
n_features = 1

其中:

n_steps 为输入的 X 每次考虑几个时间步 n_features 为每个时间步的序列数

这个是最基本的模型结构,我们后面几种模型会和这个进行比较。


2. Multiple Input

 

 

Multiple Input 是指:

input 为多个序列, output 为一个序列的问题。

数例:

训练集:
X,       y
[[10 15]
 [20 25]
 [30 35]] 65
[[20 25]
 [30 35]
 [40 45]] 85
[[30 35]
 [40 45]
 [50 55]] 105
[[40 45]
 [50 55]
 [60 65]] 125
…


预测输入:
X,
80,  85
90,  95
100,     105

即数据样式为:

in_seq1: [10, 20, 30, 40, 50, 60, 70, 80, 90]
in_seq2: [15, 25, 35, 45, 55, 65, 75, 85, 95]

out_seq: [in_seq1[i]+in_seq2[i] for i in range(len(in_seq1))]

模型的 Keras 代码:

# define model【Vanilla LSTM】
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')

n_steps = 3
# 此例中 n features = 2,因为输入有两个并行序列
n_features = X.shape[2]

其中:

n_steps 为输入的 X 每次考虑几个时间步 n_features 此例中 = 2,因为输入有两个并行序列

和 Univariate 相比:

模型的结构代码是一样的,只是在 n_features = X.shape[2],而不是 1.


3. Multiple Parallel

 

 

Multiple Parallel 是指:

input 为多个序列, output 也是多个序列的问题。

数例:

训练集:
X,          y
[[10 15 25]
 [20 25 45]
 [30 35 65]] [40 45 85]
[[20 25 45]
 [30 35 65]
 [40 45 85]] [ 50  55 105]
[[ 30  35  65]
 [ 40  45  85]
 [ 50  55 105]] [ 60  65 125]
[[ 40  45  85]
 [ 50  55 105]
 [ 60  65 125]] [ 70  75 145]
…


预测输入:
X,
70, 75, 145
80, 85, 165
90, 95, 185

模型的 Keras 代码:

# define model【Vanilla LSTM】
model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
model.add(Dense(n_features))
model.compile(optimizer='adam', loss='mse')

n_steps = 3
# 此例中 n features = 3,因为输入有3个并行序列
n_features = X.shape[2]

其中:

n_steps 为输入的 X 每次考虑几个时间步 n_features 此例中 = 3,因为输入有 3 个并行序列

和 Univariate 相比:

模型结构的定义中,多了一个 return_sequences=True,即返回的是序列, 输出为 Dense(n_features),而不是 1.


4. Multi-Step

 

 

Multi-Step 是指:

input 为多个时间步, output 也是多个时间步的问题。

数例:

训练集:
X,          y
[10 20 30] [40 50]
[20 30 40] [50 60]
[30 40 50] [60 70]
[40 50 60] [70 80]
…


预测输入:
X,
[70, 80, 90]

模型的 Keras 代码:

# define model【Vanilla LSTM】
model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps_in, n_features)))
model.add(LSTM(100, activation='relu'))
model.add(Dense(n_steps_out))
model.compile(optimizer='adam', loss='mse')

n_steps_in, n_steps_out = 3, 2
n_features = 1

其中:

n_steps_in 为输入的 X 每次考虑几个时间步 n_steps_out 为输出的 y 每次考虑几个时间步 n_features 为输入有几个序列

和 Univariate 相比:

模型结构的定义中,多了一个 return_sequences=True,即返回的是序列, 而且 input_shape=(n_steps_in, n_features) 中有代表输入时间步数的 n_steps_in, 输出为 Dense(n_steps_out),代表输出的 y 每次考虑几个时间步.

当然这个问题还可以用 Encoder-Decoder 结构实现:

# define model【Encoder-Decoder Model】
model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(n_steps_in, n_features)))
model.add(RepeatVector(n_steps_out))
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(optimizer='adam', loss='mse')

5. Multivariate Multi-Step

 

 

Multivariate Multi-Step 是指:

input 为多个序列, output 为多个时间步的问题。

数例:

训练集:
X,          y
[[10 15]
 [20 25]
 [30 35]] [65 
          85]
[[20 25]
 [30 35]
 [40 45]] [ 85
           105]
[[30 35]
 [40 45]
 [50 55]] [105 
         125]
…


预测输入:
X,
[40 45]
 [50 55]
 [60 65]

模型的 Keras 代码:

# define model
model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps_in, n_features)))
model.add(LSTM(100, activation='relu'))
model.add(Dense(n_steps_out))
model.compile(optimizer='adam', loss='mse')

n_steps_in, n_steps_out = 3, 2
# 此例中 n features = 2,因为输入有2个并行序列  
n_features = X.shape[2]

其中:

n_steps_in 为输入的 X 每次考虑几个时间步 n_steps_out 为输出的 y 每次考虑几个时间步 n_features 为输入有几个序列,此例中 = 2,因为输入有 2 个并行序列

和 Univariate 相比:

模型结构的定义中,多了一个 return_sequences=True,即返回的是序列, 而且 input_shape=(n_steps_in, n_features) 中有代表输入时间步数的 n_steps_in, 输出为 Dense(n_steps_out),代表输出的 y 每次考虑几个时间步, 另外 n_features = X.shape[2],而不是 1, 相当于是 Multivariate 和 Multi-Step 的结构组合起来。


6. Multiple Parallel Input & Multi-Step Output

 

 

Multiple Parallel Input & Multi-Step Output 是指:

input 为多个序列, output 也是多个序列 & 多个时间步的问题。

数例:

训练集:
X,          y
[[10 15 25]
 [20 25 45]
 [30 35 65]] [[ 40  45  85]
          [ 50  55 105]]
[[20 25 45]
 [30 35 65]
 [40 45 85]] [[ 50  55 105]
          [ 60  65 125]]
[[ 30  35  65]
 [ 40  45  85]
 [ 50  55 105]] [[ 60  65 125]
             [ 70  75 145]]
…


预测输入:
X,
[[ 40  45  85]
 [ 50  55 105]
 [ 60  65 125]]

模型的 Keras 代码:

# define model【Encoder-Decoder model】
model = Sequential()
model.add(LSTM(200, activation='relu', input_shape=(n_steps_in, n_features)))
model.add(RepeatVector(n_steps_out))
model.add(LSTM(200, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(n_features)))
model.compile(optimizer='adam', loss='mse')

n_steps_in, n_steps_out = 3, 2
# 此例中 n features = 3,因为输入有3个并行序列   
n_features = X.shape[2]

其中:

n_steps_in 为输入的 X 每次考虑几个时间步 n_steps_out 为输出的 y 每次考虑几个时间步 n_features 为输入有几个序列

这里我们和 Multi-Step 的 Encoder-Decoder 相比:

二者的模型结构,只是在最后的输出层参数不同, TimeDistributed(Dense(n_features)) 而不是 Dense(1)。


好啦,这几种时间序列的输入输出模式所对应的代码结构就是这样,如果您还有更有趣的,欢迎补充!

 

文章来源:https://zhuanlan.zhihu.com/p/59862381

组合预测模型 | ARIMA-LSTM时间序列预测(Python) 阅读详情

相关推荐

多任务学习的 LSTM 时间序列预测模型基于python+tensorflow实现

多任务学习是一种利用多个相关任务的信息来改善模型性能的方法。本文介绍了如何使用 LSTM 模型进行多任务学习,在时间序列预测中预测多个相关变量。通过引入辅助任务,可以进一步提高模型的准确性。实验结果显示,多任务学习的 LSTM 模型在时间序列预测中表现出良好的性能。这种方法可以应用于许多领域,如金融预测、天气预报等。通过本文的学习,读者将了解到多任务学习的概念、LSTM 模型的构建和训练过程,以及如何应用于时间序列预测中。

weixin_43155435的博客 6137

LSTM模型预测时间序列(快速上手)

写在前面 LSTM模型的一个常见用途是对长时间序列数据进行学习预测,例如得到了某商品前一年的日销量数据,我们可以用LSTM模型来预测未来一段时间内该商品的销量。但对于不熟悉神经网络或者对没有了解过RNN模型的人来说,想要看懂LSTM模型的原理是非常困难的,但有些时候我们不得不快速上手搭建一个LSTM模型来完成预测任务。下面我将对一个真实的时间序列数据集进行LSTM模型的搭建,不加入很多复杂的功能,快速的完成数据预测功能。 问题大概如下:某煤矿有一个监测井,我们每20分钟获...

Q_M_X_D_D_的博客 18万+

基于 Keras 用 LSTM 网络做时间序列预测

作者:徐瑞龙,量化分析师博客专栏:https://www.cnblogs.com/xuruilong100前文推送:时间序列分析工具箱——timetk基于 Keras 用...

R语言中文社区 1万+

【机器学习】LSTM模型原理

RNN概念与网络结构,LSTM概念与网络结构,RNN和LSTM的关系,LSTM的要素

shuaixio的博客 1万+

Keras LSTM实现多维输入输出时序预测实践详解

自古以来,我们就希望预知未来,现如今,随着大数据人工智能技术的发展,我们早已经不满足传统的同比、环比等数据分析方法,但是时间序列趋势预测的传统算法又很专业,很难用于日常生产经营中。 深度学习神经网络为我们提供较为通用的解决方案,我们将在这里实践基于Python Keras LSTM多维输入输出时序预测模型。

肖永威的专栏 1万+

Keras实现RNN和LSTM做回归预测(python)

学习了RNN和LSTM的理论知识,下面再来使用Keras实现一下这些模型。 理论知识: 循环神经网络(RNN) LSTM神经网络和GRU Keras实现神经网络: Keras实现全连接神经网络(python) Keras的安装过程: Tensorflow和Keras版本对照及环境安装 1. 环境准备 import matplotlib.pyplot as plt from math import sqrt from matplotlib import pyplot import pandas a

小朱小朱绝不认输的博客 1万+

CNN做时间序列预测_6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。1. UnivariateUnivariate 是指: input 为多个时间步, output 为...

weixin_39968436的博客 1962

AI嵌入式系统测试:从确定性验证到概率性评估的体系构建

软件测试是保障系统质量的关键环节,其核心在于验证功能是否符合预期。传统嵌入式测试聚焦于确定性逻辑,通过代码覆盖、边界值分析等方法确保时序、内存等指标的精确性。随着人工智能技术的普及,深度学习模型以其概率性输出和复杂非线性映射的特性,为嵌入式系统带来了新的能力,也彻底改变了测试的范式。AI模型的‘黑盒’特性使得测试目标从‘绝对正确’转向‘置信度满足’,并催生了准确率、F1分数等新指标。在工程实践中,这种融合要求测试体系必须扩展维度,将数据质量、模型量化损失、资源约束下的精度与性能权衡纳入核心考量。尤其在嵌入式

weixin_26766559的博客 382

lstm时间序列预测_6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。1. UnivariateUnivariate 是指: input 为多个时间步, output 为...

weixin_39992417的博客 1445

NetApp 7-mode初始化详解(原AGGR重建)及注意事项

没想到有生之年还能再写个7-mode的文章,上次接触可能已将近十年,本次恰巧碰到这个机会,边学习边整理,整整一天时间,碰到了不少坑,作为记录。

RaySun的技术Blog 2751

分数计算器(C++课设)

需求概述 (1)设计一个分数计算器,进行分数的算术运算和逻辑运算。 (2)能够像使用基本数据的对象一样,对分数进行“+”、“-”、“*”和“/”等算术运算和比较两个分数的大小。 (3)以a/b的形式输入输出分数,允许输入输出整数这种特殊形式。 (4)对不是约化型的分数进行约化,避免分母为负数。 (5)如果分数的分母为0、除数为0或输入时格式有错,采用异常处理机制解决。 输入 以分数的形式输入。(如1/2) 若分母为0会抛出异常,重新输入。 菜单页面 RationalNumber.h(头文件) #ifnd

sadnessss的博客 8769

【转】6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。 今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。 1. Univariate Univariate 是指: input 为多个...

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 786

用WorkBuddy和ima搭建本地知识库:从概念到实操

在AI应用普及的今天,私有知识的高效管理与调用成为痛点。RAG(检索增强生成)技术通过将外部知识库与语言模型耦合,为精准问答提供了技术底座。然而,传统RAG方案往往涉及向量数据库、文本切分等复杂环节。一种更轻量的路径应运而生:借助WorkBuddy与ima的组合,将知识收集、语义检索与智能体工作流整合,让本地知识库真正服务于日常办公和研发场景。从概念到实操,系统解析这套轻量级方案的核心逻辑与配置方法,并对比重方案适用边界,帮助读者快速搭建属于自己的AI知识助手。

weixin_32830601的博客 419

拿到input输入的时间_6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现

LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。1. UnivariateUnivariate 是指: input 为多个时间步, output 为...

weixin_35993037的博客 587

从零到一:如何用YOLOv8和PyQt5打造一个高效的路面坑洞检测系统

本文详细介绍了如何利用YOLOv8和PyQt5开发一个高效的路面坑洞检测系统。从环境配置、数据采集标注到模型训练优化,再到PyQt5界面开发与系统集成,提供了完整的实战指南。该系统结合深度学习技术,显著提升了道路检测的准确性和效率,适用于各类道路维护场景。

weixin_29047919的博客 308

在MATLAB和Simulink中设计并仿真一个电动汽车整车动力学模型与控制系统

电动汽车(EV, Electric Vehicle)的动力学建模与控制仿真在车辆开发过程中起着至关重要的作用。通过Simulink进行整车动力学模型的构建和控制策略的验证,可以有效评估车辆性能、优化系统设计并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个电动汽车整车动力学模型与控制系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的电动汽车整车动力学模型与控制仿真。该系统能够模拟复杂的整车动力学行为,验证控制策略的有效性,并通过优化设计提高车辆的性能和可靠性。

xiaoheshang_123的博客 549

c语言实现lstm神经网络模型,6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现...

LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。1. UnivariateUnivariate 是指:input 为多个时间步,output 为一个...

weixin_34282558的博客 1914

【EB_Tresos专题】-06-配置一个UDS诊断DID

<--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> 结尾 ...

「汽车电子助手」的博客 4085

多元时间序列预测之LSTM的实现

多元时间序列预测之LSTM的实现keras简单介绍多变量LSTM预测模型 本文使用keras库实现基于LSTM的多元时间序列预测问题。所谓多元时间序列预测,是指根据多个变量之间的关系预测他们下一时刻的值。 本文仅搭建LSTM模型进行预测,数据的预处理部分自行完成。 keras简单介绍 keras是一个极简的、高度模块化的神经网络库,可以运行在tensorflow上,具体可看keras中文文档。 具体安装可在网上搜索,非常简单。 多变量LSTM预测模型 1.导入所需的包 from math import sq

weixin_43699616的博客 1万+

ISP算法:宽动态HDR

动态范围(Dynamic Range):在很多领域来表示某个变量的最大值和最小值的比值。在数字图像处理领域里,动态范围也被称为图像对比度,表示图像可以显示范围内,像素最大亮度值和最小亮度值的比值。 高动态范围图像(High Dynamic Range Image): 可以反映真实场景中高动态范围亮度信息图像。 高动态技术:能自动调整图像动态范围的一种技术。该技术是一种利用计算机高速运算产生高

a200800170331的专栏 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

在Keras中使用LSTM模型进行多变量时间序列预测

今天我给大家介绍一个国外深度学习大牛Jason Brownlee写的一篇关于多变量时间序列预测的博客,我在原文的代码基础上做了一点点修改,只是为了便于大家更好的理解。在本文中,您将了解如何在Keras深度学习库中为多变量时间序列预测开发LSTM模型。读完成本文后,您将了解: 如何将原始数据集转换为可用于时间序列预测的数据。 如何准备数据并使LSTM适合多变量时间序列预测问题。 如何进行预测并...

weixin_42608414的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

基于Keras用LSTM进行时间序列预测(一)

如何基于Keras和Tensorflow用LSTM进行时间序列预测 李倩 发表于 2018-09-06 08:53:16 论智 +关注 编者按:本文将介绍如何基于Keras和Tensorflow,用LSTM进行时间序列预测。文章数据来自股票市场数据集,目标是提供股票价格的动量指标。 GitHub:github.com/jaungiers/LSTM-Neural-Network-for...

Poo_Chai的博客 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

简单却好用:使用Keras 2实现基于LSTM的多维时间序列预测

朋友们好,时隔很久我又开始写时间序列相关的博客啦。 本次博客的主题是: 提供一种适用于初中级学者的时间序列预测模型 并且十分的有效好用 数据介绍 该数据集是一个污染数据集,我们需要用该多维时间序列去预测pollution这个维度,采用80%作为训练集,20%作为测试集。 模型实现 模型使用双层LSTM加一个全连接层实现预测 具体结构如下 def trainModel(trainX,trainY,config): ''' trainX,trainY: 训练LSTM模型所需要的数据 p

小EZ的博客 7327

【keras】利用LSTM进行单变量时间序列预测和多变量时间序列预测

        对于较为简单的时间序列预测问题,可以使用Exponential Smoothing和ARIMA等传统模型非常方便地求解。然而,对于复杂的时间序列预测问题,LSTM不失为一种很好的选择。因此,本文旨在探讨如何利用LSTM神经网络求解时间序列预测问题。首先,需要明白时间序列预测问题是如何转换为传统的监督学习问题的,即时间窗方法。有关时间序列预测问题转换为监督学习的过程请移步:Time ...

XYZ 3万+
上一篇: C++技巧之断言Assert(2)
下一篇: 时间序列预测方法总结
Poo_Chai
博客等级 码龄9年 178粉丝 117原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值