1、LSTM 的参数输入格式
一般表示为[batch_size, time_step, input_size]
中文解释为[每一次feed数据的行数,时间步长,输入变量个数]
2、input_size
如果你使用7个自变量来预测1个因变量,那么input_size=7,output_size=1
如果你使用8个自变量来预测3个因变量,那么input_size=8,output_size=3
这个还是比较好理解的,你的输入数据,想要通过什么变量预测什么变量应该是比较清楚的.
3、batch_size
如果你的数据有10000行,训练100次把所有数据训练完,那么你的batch_size=10000/100=100;如果你的数据有20000行,同样训练100次把所有数据训练完,那么你的batch_size=20000/100=200;如果你的数据有20000行,训练50次把所有数据训练完,那么你的batch_size=20000/50=400……以此类推
一般的batch_size小于100,来使你的训练结果更好,一次feed太多行数据,模型容易吃撑,消化不良。
4、time_step
之前的batch_size中只是规定了一个每次feed多少行数据进去,并没有涵盖一个时间的概念进去,如果你的数据都是按照时间排列的,batch_size是100的话,time_step=10,则在第1次训练的时候,用前100行数据进行训练,而在这其中每次给模型10个连续时间序列的数据。
具体请看下图示例。
[batch_size, time_step, input_size]=[30,5,7]
time_step=n, 就意味着我们认为每一个值都和它前n个值有关系
-
上图中,黑色框代表的就是一个batch_size中所含有的数据的量。从上到下的3个红色框就为 time_step为5的时候,每次细胞输入门所输入的数据量。
-
列B~列H,一共7列,为 input_size。
再看下图
time_step=n, 就意味着我们认为每一个值都和它前n个值有关系
- 假如没有time_step这个参数, [input_size=7,batch_size=30],一共只需要1次就能训练完所有数据。
- 如果有,那么变成了 [input_size=7,batch_size=30, time_step=5],需要30-5+1=26,需要26次数据连续喂给模型,中间不能停。
- 在26次中每一次都要把上一次产生的y,与这一次的5行连续时间序列数据一起feed进去,再产生新的y
- 以此往复,直到此个batch_size 结束。
5、结语
- input_size 是根据你的训练问题而确定的。
- time_step是LSTM神经网络中的重要参数,time_step在神经网络模型建好后一般就不会改变了。
- 与time_step不同的是,batch_size是模型训练时的训练参数,在模型训练时可根据模型训练的结果以及loss随时进行调整,达到最优。
转载于:DeepLearning之LSTM模型输入参数:time_step, input_size, batch_size的理解[通俗易懂]-腾讯云开发者社区-腾讯云