LSTM的参数解释
LSTM总共有7个参数:前面3个是必须输入的
1:input_size: 输入特征维数,即每一行输入元素的个数。输入是一维向量。如:[1,2,3,4,5,6,7,8,9],input_size 就是9
2:hidden_size: 隐藏层状态的维数,即隐藏层节点的个数,这个和单层感知器的结构是类似的。这个维数值是自定义的,根据具体业务需要决定,如下图:
input_size:就是输入层,左边蓝色方格 [i0,i1,i2,i3,i4],hidden_size:就是隐藏层,中间黄色圆圈 [h0,h1,h2,h3,h4]。最右边蓝色圆圈 [o0,o1,o2] 的是输出层,节点个数也是按具体业务需求决定的。
3:num_layers: LSTM 堆叠的层数,默认值是1层,如果设置为2,第二个LSTM接收第一个LSTM的计算结果。也就是第一层输入 [ X0 X1 X2 ... Xt],计算出 [ h0 h1 h2 ... ht ],第二层将 [ h0 h1 h2 ... ht ] 作为 [ X0 X1 X2 ... Xt] 输入再次计算,输出最后的 [ h0 h1 h2 ... ht ]。(下面是一开始对这个参数的理解,现在看来是错误的,但依然保留,防止哪天再次理解错误)
(RNN 单元的个数。我们可以简单理解,LSTM 实际上就是由多个上面图例的结构组成(准确说是一个 RNN 结构),一个结构体为一个单元,也可以叫做一个神经元。这里的 num_layers 就是表示有多少个这样的结构体。如下图:就是 A 单元的个数,换言之,就是你有多少个连续相关的数据需要输入,就有多少个这样的结构体来组成 LSTM。 因为 LSTM 要实现的功能就是根据前后相关联的数据来推断结果,前后数据之间必须建立某种联系,而这种联系一般都是有顺序性或有时序的数据。)