lstm timestep一般是多少_请问rnn和lstm中batchsize和timestep的区别是什么?

本文介绍了RNN和LSTM单元的参数概念,强调了batchsize是样本数量,timestep是每个样本的时刻数。通过LSTM处理MNIST手写体分类的例子,解释了如何将图像序列化并输入到LSTM中,阐述了batchsize和timestep在实际应用中的含义。
摘要由CSDN通过智能技术生成

首先需要明确的概念是:batchsize指的是一次喂入网络的样本数,属于样本数量上的概念;而timestep指的是每个样本内包含有多少个时刻(步长),属于每个样本内部的概念。既然题主提出了这样的疑问,说明对于LSTM的细节至于尚有困惑之处,因此下面先大致说一下一个RNN和LSTM单元内部的参数情况,再以基于LSTM的MINIST手写体分类这个例子来说明。

1 RNN和LSTM单元到底长啥样

1.1 RNN单元

以tensorflow中的实现为例,一个最基本的RNN单元中有三个可训练的参数

,以及两个输入变量input和h0,下图为RNN中各参数的维度信息[1]:

可以看出,一个RNN单元接受输入的shape为[batchsize,n]​,如果每个样本包含timestep个时刻,则最后的输入shape为[batchsize,timestep,n](或者[timestep,batchsize,n])。

1.2 LSTM单元

一个最基本的LSTM单元中有4个可训练的参数,下图为LSTM中各参数的维度信息[2]:

可以看出,一个LSTM单元接受输入的shape仍旧为[batchsize,n],如果每个样本包含timestep个时刻,则最后的输入shape同样为[batchsize,timestep,n](或者[timestep,batchsize,n])。

2 基于LSTM的MINIST分类

说一千道一万,不如举例看一看。由于循环神经网络是用来处理包含序列化数据的相关问题,所有若要利用循环神经网络来解决某类问题,那么首先要做的就是将原始数据集序列化,然后处理成某个深度学习框架所接受的数据输入格式[3]。

我们知道MNIST数据集中的每张图片形状都是[28*28]的,那么如何将其序列化呢?想要知道怎么序列化,那还得从LSTM接受怎样的输入说起。上面我们说到,一个LSTM单元可以按时间维度进行展开处理,那么对于一个黑白图片来说该怎么展开呢?并且展开后必须得有前后的序列关系。 最直接的想法当然就是每个像素点当成一个部分,直接展开成784个LSTM单元。这种做法理论上当然没有什么问题,只是显得略微有点粗暴了;那我们就稍微缓和一点,按行或者按列来分割成28行(列),然后将这28个部分看成是序列。如下图所示:

所以,对于整个数据集来说:我们第一步要做的就是将其reshape成[batchsize,high,width]的这种形式;然后第二步就是将其按行分割成28个部分,变成[timestep,batchsize,dim]。以batchsize = 4为例,可以画出如下示意图:(题主请注意,此时的batchsize=4就是指一共有4张图片,而timestep=28则指的是我们将一张图片分割成28个时刻)

温馨提示:4种颜色分别表示4张图片

对于得到的这种形式的数据,我们再喂给展开后的LSTM时是长下面这个样的:

此时注意,再次强调:上图中batchsize=4表示此时一次喂入网络的有4张图片,timestep=28则指的是我们将每一张图片都分割成28个时刻,分别喂给每一个LSTM单元

后续的分类处理就不多说,直接取LSTM最后网络最后一个时刻的输出进行分类即可。

引用[1]CSDN-专业IT技术社区-登录​nulls.blog.csdn.net[2]Tensorflow中BasicLSTMCell​nulls.blog.csdn.net[3]CSDN-专业IT技术社区-登录​nulls.blog.csdn.net

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值