对于LSTM输入层、隐含层及输出层参数的个人理解

LSTM输入层要求的维度是三维的,其中包含三个参数:batch_size, input_dim和time_step。隐含层有一个参数:n_hidden。输出层有两个参数:n_hidden和output_dim。下面举两个例子:利用LSTM识别MNIST手写数字集LSTM时间序列分析,谈谈个人对这些参数含义的理解。

1. 利用LSTM识别MNIST手写数字集

n_input = 28  # 输入层的n 
n_steps = 28  # 28长度 
n_hidden = 128  # 隐含层的特征数 
n_classes = 10  # 输出的数量,因为是分类问题,0~9个数字,这里一共有10个
batch_size = 128  

输入层:首先说下batch_size。这个参数其实和其他神经网络的batch_size意义相同,都指一次性输入到神经网络中的样本数。这里batch_size=128,含义是一次性将128个图像输入到LSTM中进行训练,完成一次误差反向传播和参数更新。再说说n_steps。n_steps实际上指的是构造的LSTM总共有多少个时间上的输入。在这里取n_step = 28,指的是先后依次输入28次,一次输入的个数为batch_size * n_input。在MNIST数据集中,一幅图片表示为28*28的矩阵,因此如果一次输入1行,那么要先后依次输入28行才能将一个图片的信息完全输入。那么同时input_dim(在此处为n_input)的含义也很清楚了,就是一次输入的数据维数,在这里就是1行的数据个数。因此,输入端的操作是,在起始0时刻输入128幅图片的第1行,1时刻输入128幅图片的第2行。以此类推直到第28时刻输入最后1行。
隐含层:隐含层只有一个新的参数:n_hidden。这个参数表示的是用于记忆和储存过去状态的节点个数。即使用n_hidden个节点表示隐含层状态。
输出层:输出层也只有一个新的参数:output_dim(在此处为n_classes)。这个参数的含义是输出结果维数。在MNIST数据集中,由于做的是0~9的分类,所以输出维度自然是10。

2. LSTM时间序列分析

输入层:在这个例子中,使用了Keras作为搭建LSTM的平台。查看Keras的文档,得知其对输入数据的要求是

形如(samples,timesteps,input_dim)的3D张量

而第二个例子中对于输入数据做的处理为
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
因此不难比较得到:

batch_size = x_train.shape[0]
time_steps = x_train.shape[1]
input_dim = 1

由于这个例子是给定一个已知序列,对该序列接下来的走势进行预测,因此自然而然想到把一个序列分割成训练集和测试集,训练集再选取合适的历史窗长分成(t-n+1)~(t)时刻的历史数据和(t+1)时刻的待预测数据。那么batch_size的含义是一次性输入训练的序列数。time_step为取的一个历史数据序列的长度,也就是上一句话的n。在这个例子中,input_dim为1,说明在同一个时间点,这个序列只有一维输入。input_dim可以是多维,这就意味着同一时刻有多维输入,直观的例子是:预测明天的温度,可能需要输入今天的最高温、最低温、风向、湿度等多种参数,因此input_dim可以大于1。隐含层和输出层类似,不再重复。

  • 57
    点赞
  • 255
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值