预测周期数列理解LSTM输入输出

本文通过一个简单的周期数列示例,解释了LSTM在处理序列数据时如何工作,包括数据的输入输出格式、LSTM的数据处理方式和网络构建。重点讨论了LSTM对3D张量的需求以及如何将周期数列转化为适合LSTM的输入格式,为理解LSTM的工作原理提供基础。
摘要由CSDN通过智能技术生成

这两天被LSTM搞的头大,作为深度学习只入门四天的我对各式各样的名词真心无力。但好在功夫不负有心人,终于初步理解了LSTM

目标

  • 周期数列为例,学习LSTM的使用,并初步理解LSTM的输入与输出

LSTM应用场景

数据涉及到序列的,并且序列数据有界。都可以以LSTM为核心来进行学习。

怎样的数据涉及到序列,以本文的周期数列为例子,每一项,都与之前项有必然的链式关系,并且数据有界,一般的,但凡有存在链式关系的数据,都可以进行泛化预测。天气预报、语言对话(NLP),温度预测,乃至股票预测都是可能的,但是这些都有一个非常非常重要的因素,那就是相关数据的分析,比如影响温度的因素是什么?所以从这一点来说,股票又是不可预测的。需要注意的是像如发散的无穷数列是很难使用LSTM预测的。因为如果预测样本不在拟合的范围内。此时预测的数据是很难的。

从一开始我一直想预测等差数列,但是效果太差,只有靠近样本中心,效果才会好,我一直以为是我对LSTM的理解用法有问题,但我今天在取快递的路上突然想到,如果训练数据都在一个边界内训练,要想预测边界外的数据理论上是不可能的,因为情况太多。因此我认为要想能够预测等差数列,必须要对数据定义一个边界,至于边界与真实数据怎么样的映射关系这是需要分析的,只有处理好了边界映射,训练的效果才会好。

为什么LSTM处理序列数据那么强大,因为它有’记忆’,在内部设计有处理序列之间关系的算法。LSTM又叫长短期记忆(LSTM,long short-term memory)

以最简单的周期数列开始

下面我们将以最简单的周期数列开始,学习LSTM,现有周期数列{1,2,3,1,2,3} 预测后面的结果,当然这样的预测实际意义是不大的。案例的目的仅仅是以这数据为基础,方便理解LSTM工作原理,事实上,复杂的训练也是以这简单的数据为核心开始的。

训练数据输入与输出的处理

LSTM数据输入格式

数据输入格式(batch_size,timesteps,input_features) 这是一个3D张量,这个输入也只能必须当且仅当是3D张量,不懂什么叫张量?如果是读过高中那就没问题,计算机张量数学向量基本上是一回事,两者本质上是对信号的一种表达。如果LSTM作为第一层,训练数据必须为3D张量

timesteps 表示序列长度,打个比方,我们将周期数列转换为一批又一批的序列数据,LSTM在每次进行记忆的就是单个序列中每个特征值之间的联系。这里的特征值可以理解为周期数列的1,2,3,1,2,3。因为我们的周期数列长度为6,注意这个6不一定是序列长度,序列长度是你定义的,他应该大于1小于6。假设我们现在定义序列长度为2。那么根据周期数列{1,2,3,1,2,3}我们可以推出以下数据

手动转换周期数列为3D张量

对于周期数列 {1,2,3,1,2,3}一定存在这样的关系,我们从左边取序列长度为2数据有,这是一个滑动固定窗口的过程,注意高亮数据

原始数据 张量每一批(timesteps,input_features) 张量输出每一批
{ 1,2,3,1,2,3} [[1],[2]] 3
{1,2,3,1,2,3} [[2],[3]] 1
{1,2,3,1,2,3} [[3],[1]] 2
{1,2,3,1,2
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值