LSTM的输入格式和输出个数说明

前言

最近使用LSTM 神经网络进行预测的时候,突然发现对其输入输出不是很清晰,照着大佬们的改改还行,不能深入了解,有点难受呀。
下面简单介绍一下。

讨论

转换为LSTM的3D格式(samples,time steps,feature)
samples :就是指样本个数
time steps:时间步长
feature:特征的维度(我的理解是一维数据就是1,二维数组就是2),针对于训练数据的格式
LSTM的input_shape:(time steps,feature)
全连接层Dense()的输出个数

单维单步

时间序列:10,20,30,40,50,60,70,80,90

  • 前一个数据预测下一个数据
10 -----20
20 -----30
30 -----40
40 -----50
50 -----60
60 -----70
70 -----80
80 -----90

trainX.shape(8,1)
trainY.shape(8,1)
reshape为:(8,1,1)
LSTM的input_shape为:(time steps,feature)(1,1)这里上面reshape数据的后两位一样。
很多大佬写代码时,喜欢trainX.shape[1],trainX.shape[2]这样的格式,搞清楚原理后,咋写都行。
最后的全连接层Dense() ,这里是指输出的个数,1

  • 前三个数据预测下一个数据
10 20 30  -----40
20 30 40  -----50
30 40 50  -----60
40 50 60  -----70
50 60 70  -----80
60 70 80  -----90

trainX.shape(6,3)
trainY.shape(6,1)
reshape为:(6,3,1)
LSTM的input_shape为:(3,1)
全连接层Dense()的个数:1

单维多步

时间序列:10,20,30,40,50,60,70,80,90
前三步预测下两步

10 20 30  -----40 50
20 30 40  -----50 60
30 40 50  -----60 70
40 50 60  -----70 80
50 60 70  -----80 90

trainX.shape(5,3)
trainY.shape(5,2)
reshape为:(5,3,1)
LSTM的input_shape为:(3,1)
全连接层Dense()的个数:2

多维单步

前三步预测下一步
这里借用大佬的图片数据
LSTM的输入格式和输出个数说明_第1张图片
trainX.shape(4,3,2),feature 为2 ,两维
trainY.shape(4,2)
reshape为:(4,3,2) # 不用reshape也行
LSTM的input_shape为:(3,2)
全连接层Dense()的个数:2

多维多步

前三步预测后两步
LSTM的输入格式和输出个数说明_第2张图片
trainX.shape(3,3,2),feature 为2 ,两维
trainY.shape(3,2,2)
reshape为:(3,3,2) # 不用reshape也行
LSTM的input_shape为:(3,2)
全连接层Dense()的个数:4 # 输出四个值
这里的话,代码上是要做处理的,详细请参考https://blog.csdn.net/qq_35649669/article/details/89575949

总结

  • 不同预测方式的数据格式要相对应改变
  • LSTM对应数据要正确,其实有些地方对不上的话,也不影响代码正常运行,但是要科学对待

你可能感兴趣的:(时间序列预测,机器学习算法研究,Python基础学习,lstm,神经网络,深度学习)