【问题标题】:How does LSTM in Keras access the input?Keras 中的 LSTM 如何访问输入?
【发布时间】:2017-12-11 16:42:36
【问题描述】:

我对 LSTM 如何处理输入有点困惑。 众所周知,Keras 中 LSTM 模型的输入有 (batch_size, timesteps, input_dim) 的形式。 我的数据是一个时间序列数据,其中每个 n 个时间步的序列被输入以预测 n+1 个时间步的值。那么,他们如何访问输入?他们处理序列中的每个时间步,还是同时访问所有时间步? 当我检查每个 LSTM 层的参数数量时。它们有 4*d*(n+d) 其中 n 是输入的维度,d 是存储单元的数量。 在我的情况下,我有 d=10,参数的数量是 440(没有偏差)。所以这里的意思是 n=1,所以看起来输入的维度是 1*1。 然后他们可以自发地访问所有这些。 有人对此有一些想法吗?

【问题讨论】:

    标签: python keras lstm


    【解决方案1】:

    首先,考虑一个卷积层(它更容易)。

    它的参数仅取决于“过滤器大小”、“输入通道”和“过滤器数量”。但从来没有关于“图像的大小”。

    发生这种情况是因为它有点像“步行手术”。同一组过滤器应用于整个图像。总操作随图像大小而增加,但仅定义过滤器的参数与图像大小无关。 (想象一个过滤器来检测一个圆圈,这个过滤器不需要改变来检测图像不同部分的圆圈,尽管它适用于整个图像中的每个步骤)。

    所以:

    • 参数:过滤器数量 * 过滤器大小² * 输入通道
    • 计算步骤:图像大小(考虑步幅、填充等)

    对于 LSTM 层,会发生类似的事情。这些参数与他们所谓的“门”有关。 (Take a look here)

    在每次迭代中应用“状态”和“门”以确定状态将如何变化。

    不过,门与时间无关。计算确实是时间迭代,但每次迭代都使用同一组门。

    对比卷积层:

    • 参数:单元格数,数据维度
    • 计算步骤:时间步长

    【讨论】:

    • 是的,谢谢您的回答。所以你认为在这种情况下什么是时间相关的?
    • 细胞的内部状态是时间相关的。每个序列步骤都会改变内部状态。但我们通常看不到或不在乎。每个时间步都会: 1 - 以某种方式改变这个内部状态; 2 - 使用这个内部状态 + 输入(上一步的输出)来生成结果。
    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 2018-06-05
    • 2018-03-19
    • 2019-11-28
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多