我对LSTM处理输入的方式有点困惑 . 众所周知,Keras中LSTM模型的输入格式为(batch_size,timesteps,input_dim) . 我的数据是时间序列数据,其中n个时间步长的每个序列被馈入以预测n个时间步长的值 . 然后,他们如何访问输入?他们处理序列中的每个步骤或同时访问所有步骤?当我检查每个LSTM层的参数数量时 . 它们具有4 * d *(n d),其中n是输入的维数,d是存储单元的数量 . 在我的情况下,我有d = 10,参数的数量是440(没有偏差) . 所以这意味着n = 1,所以看起来输入的维度为1 * 1 . 然后他们可以自由地访问所有这些 . 有人对此有一些想法吗?
1 回答
首先,想一下卷积层(它更容易) .
它的参数仅取决于“过滤器大小”,“输入通道”和“过滤器数量” . 但从来没有在“图像的大小” .
发生这种情况是因为它有点像“行走操作” . 在整个图像中应用相同的滤镜组 . 总操作随着图像的大小而增加,但仅定义过滤器的参数与图像大小无关 . (想象一下用于检测圆形的滤镜,此滤镜不需要更改以检测图像不同部分中的圆圈,尽管它适用于整个图像中的每个步骤) .
所以:
参数:滤波器数量滤波器大小²输入通道
计算步骤:图像大小(考虑步幅,填充等)
使用LSTM层,会发生类似的事情 . 这些参数与他们称之为"gates"的内容有关 . (Take a look here)
每次迭代都会应用“状态”和“门”来确定状态将如何变化 .
但是,大门不依赖于时间 . 计算确实是时间迭代,但每次迭代都使用相同的门组 .
与卷积层相比:
参数:单元格数,数据维度
计算步骤:时间步长