DeepLearning之LSTM模型输入数据:白话降维解说

《 Dianchen666’s Deep Learning 学习笔记系列 ---- 小白角度看深度学习》

有导航,不迷路。

(1). DeepLearning之LSTM模型输入参数:time_step, input_size, batch_size的理解

(2). DeepLearning之LSTM模型输入数据:白话降维解说


本文摘要:

  1. 对于LSTM的输入参数的理解的应用。

  2. LSTM模型真正的输入数据是什么样的?

  3. 通过LSTM的输入数据实例的讲解,更好的理解循环神经网络的输入数据。


1. LSTM的基本介绍

  1. 上次讲到了LSTM模型的输入参数的理解,这一篇讲讲我对LSTM以及循环网络模型的输入数据的理解。
  2. LSTM是循环神经网络的一个变种,加入了多个门来控制每个神经细胞的状态
  3. 细胞的状态对于整个模型是非常重要的,训练模型主要是更新每个细胞的输入参数,转态参数,输入的参数,让每个细胞处于一个稳定的状态
  4. 输入的数据的一般是time_step, input_size, batch_size,这三个输入参数的定义我已经在上一篇博文中谈了谈我的理解
  5. 受一位博友启发,但是我发现好像没有博文对输入数据到底是什么样的,讲的非常的清晰透彻、清楚。
  6. 本文尝试从非常白话的角度,来谈谈我对输入数据模样的理解。
  7. 如有不对,还请多批评指正。

2. 基础参数理解

  1. 输入数据主要是三个参数,time_step, input_size, batch_size
  2. 借某位博友的启发,引用一下它的话:“batch_size是指有多少组序列数据,而time_step是指每组序列数据中有多少个时刻”
  3. input_size 最好理解,就是输入的数据有几个自变量,就是有几个X
  4. iteration与batchsize是有乘法关系的,3000条数据,100iteration,那么batchsize就是30。也就是Total sample = iteration(n)*batchsize
  5. batch_size就是我们常说的批处理的数据量
  6. epoch=10就是进行10*100个iteration来对模型进行训练

3. 各参数确定的次序

  1. 首先应该确定的是由几个自变量,就是有几个X,由几个变量来预测另外一个y
  2. 第2个应该确定的是time_step,就是确定你进行训练其中一次的有多少个时刻,这个time_step就应该是多少,换句话说就是你预测的这个y和之前的多少个时刻有关系,这样来确定。
  3. 第3个就是batch_size, 原理上将batch_size可能会影响你的训练速度,因为它的定义是批大小,是一次训练所选取的样本数,为了在内存效率与内存容量之间寻找平衡,白话就是提高你的训练效率。
  4. batch_size和time_step本身没有关系,但是time_step的长短和input_size的多少会影响每一个iteration训练的速度。

3. 示意图

1.还是用一个excel的数据表来进行举例
在这里插入图片描述

2.时间是从2020年6月1日-6月30日,x1,x2,x3,x4,x5说明是有5个自变量,也就是Inputsize=5,y为要预测的值。

3.此时确定timestep的值,就是你预测的这个Y值是之前的几个时刻有关系,比如上图要预测的y值使用前5天的数据来进行预测,那么time_step=5,此时将上述的数据按照time_step的大小进行重构。

4.通过time_step参数对数据进行重构后,会产生新的数据组,组数=total_sample - time_step + 1,如下图:26组=total(30) - time_step(5) +1,每组数据都有5个时刻t
在这里插入图片描述
4.其中包含5个时刻数据的这一组数据称为输入数据的一个batch,而batch_size就是每一次feed数据有多少组这样的数据。batch(26) = total(30) - time_step(5) +1
在这里插入图片描述
5.再把每一个batch的数据剖开,看看每一个batch的数据是什么样的。

6.下图为一个粗糙的示意图。讲述了在一个Batch中数据是如何进行运转的。

7.在batch1 中,T1时刻的数据分为X变量与Y变量,在T1时刻X与Y数据被同时输入到LSTM中,通过各种门的计算,输出了一个细胞状态Ct1与Ht1,这个两个变量会作为输入变量到下一个时刻的计算当中。

8.到T2时,T1时刻输出的Ct1与Ht1与T2时刻的X变量(x1x2x3x4x5)输入到LSTM模型中,通过各种门的计算,最后得到Ct2与Ht2,在输入到下一时刻,直到整个batch结束。

  1. 一个batch中会循环计算time_step次。
    在这里插入图片描述
    10.上图中,红色直线代表是的细胞状态变量的转移
    红色曲线代表的是目标值也就是Ht变量的转移。

11.在执行一个batch结束后,再执行下一个batch,batchsize=30就是1个iteration中执行了30个这样的batch,在一次feed数据中。

12.重构后的batch的个数,自己定义size的大小。上图中的所有数据重构后,变成了26个batch,你可以将batchsize设置为5,设置为10,设置为20。

13.无论batchsize设置为多少,每一组数据都是按照顺序进入到模型中进行训练。

4. 总结

  1. 那么batchsize主要影响模型的什么?主要是影响模型的泛化性能,就是模型在训练之后对于test数据预测的准确性。
  2. 一般来说:越大大的batchsize,会减少模型训练所需要的时间,提高模型的稳定性
  3. 在合适的范围内,增大batchsize,有助于收敛的稳定性,但是再随着batchsize的增加,模型的性能会下降(泛化性能)
  4. 总结来说:batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。

下一篇说说学习率与batchsiz对模型性能的影响。

————————————————
参考链接,尊重原创,支持原创!

  1. 作者:ch206265, 文章:LSTM中的batch到底是什么, https://blog.csdn.net/ch206265/article/details/107088040
  2. 作者:言有三,学习率和batchsize如何影响模型的性能?
LSTM模型输入和输出格式可以根据具体问题的需求进行定义和调整。以下是一般情况下LSTM模型输入和输出格式的描述: 输入: 1. 形状:LSTM模型输入是一个三维张量,通常为 (样本数, 时间步长, 特征数) 的形式。其中,样本数表示输入数据的样本数量,时间步长表示序列数据的长度或时间步数,特征数表示每个时间步的特征数量。 2. 特征:输入特征可以是各种类型的数据,如数字、文本、图像等。在处理文本序列时,常用的表示方法是将文本转换为词嵌入向量。在处理数字序列时,可以直接使用原始数值。 3. 归一化:在训练LSTM模型之前,通常需要对输入数据进行归一化或标准化处理,以确保数据的相对范围一致。 输出: 1. 预测值:根据具体的任务,LSTM模型的输出可以是一个或多个预测值。例如,在时序预测任务中,输出可以是下一个时间步的预测值;在分类任务中,输出可以是类别标签的概率分布。 2. 形状:输出通常与输入数据的形状相匹配。对于时序预测任务,输出的形状通常是 (样本数, 预测步长, 目标特征数);对于分类任务,输出的形状通常是 (样本数, 类别数)。 需要注意的是,具体模型输入和输出格式可能因具体问题而有所不同。在实际应用中,根据具体需求和任务目标,可能需要对输入和输出进行调整和适配。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dianchen_Raw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值