LSTM单元如何包含空间或顺序信息?

时间:2017-07-03 17:37:33

标签: neural-network keras lstm recurrent-neural-network sequential

据我了解,LSTM单元按顺序链接,每个单元都有一个输出,每个LSTM单元将输出传递给链中的下一个LSTM单元。

但是,你不是把你的整个输入放在每个LSTM单元中吗?我没有看到这个链如何反映顺序顺序重要的数据结构。

有人可以解释我哪里出错吗?我对keras中实现的lstm版本特别感兴趣,但每个答案都非常受欢迎!

1 个答案:

答案 0 :(得分:1)

不,LSTM单位都是平行的。

当您将维度分隔为他们称之为时间步长的维度时,序列仅存在于数据本身中。传递给LSTM的数据形状为(批量大小,时间步长,数据大小)。

序列出现在"时间步骤"中,但所有单元并行工作。

即使只有一个单元的LSTM仍然可以按时间步进顺序工作。

LSTM发生的事情是他们已经获得了#34;状态"。它是一个内部矩阵,就像它的记忆一样。在每个序列步骤中,都有" gate" (其他矩阵)根据步骤输入决定该步骤是否会改变状态和数量。还有"忘记门",决定旧状态是保留还是遗忘。

在keras中,您可以将属性return_sequences设置为true或false。

如果为true,结果将包含每个时间步的结果 如果为false,则仅输出最终结果。

在这两种情况下,单位只是一个"大小"结果。 (几乎与Dense图层中的单位或卷积层中的滤镜一样,它们具有更强大的功能,更多的功能,但不是更多的步骤)。

return_sequences=False的输出只有大小的单位:(Batch Size, Units)
return_sequences=True的输出将保留时间步长:(Batch Size, Time Steps, Units)