我很难理解堆叠LSTM网络中各层的输入输出流。假设我已经创建了一个堆叠的LSTM网络,如下所示:
# parameters
time_steps = 10
features = 2
input_shape = [time_steps, features]
batch_size = 32
# model
model = Sequential()
model.add(LSTM(64, input_shape=input_shape, return_sequences=True))
model.add(LSTM(32,input_shape=input_shape))
我们的堆叠LSTM网络由2个LSTM层组成,分别具有64个和32个隐藏单元。在这种情况下,我们希望在每个时间步长,第一LSTM层-LSTM(64)-作为输入传递到第二LSTM层-LSTM(32)-一个大小为[batch_size, time-step, hidden_unit_length]
的向量当前时间步的第一个LSTM层的隐藏状态。令我困惑的是:
X(t)
(作为输入),并将大小为[batch_size, time-step, hidden_unit_length]
的第一层-LSTM(64)-的隐藏状态传递给它通过自己的隐藏网络-在这种情况下,由32个节点组成?? input_shape
是相同的?在我们的情况下,input_shape
是否应设为[32, 10, 64]
?我发现下面的LSTM可视化非常有用(找到here),但是它在stack-lstm网络上没有扩展:
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:1)
input_shape
仅在第一层是必需的。后续层将上一层的输出作为输入(因此,它们的input_shape
参数值将被忽略)
下面的模型
model = Sequential()
model.add(LSTM(64, return_sequences=True, input_shape=(5, 2)))
model.add(LSTM(32))
代表以下架构
您可以从model.summary()
验证它
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_26 (LSTM) (None, 5, 64) 17152
_________________________________________________________________
lstm_27 (LSTM) (None, 32) 12416
=================================================================
替换行
model.add(LSTM(32))
与
model.add(LSTM(32, input_shape=(1000000, 200000)))
仍然会为您提供相同的体系结构(使用model.summary()
进行验证),因为input_shape
被忽略,因为它将上一层的张量输出作为输入。
如果您需要一个序列来像下面的序列进行构建
您应该使用以下代码:
model = Sequential()
model.add(LSTM(64, return_sequences=True, input_shape=(5, 2)))
model.add(LSTM(32, return_sequences=True))
应该返回模型
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_32 (LSTM) (None, 5, 64) 17152
_________________________________________________________________
lstm_33 (LSTM) (None, 5, 32) 12416
=================================================================
答案 1 :(得分:0)
在keras文档中,提到的输入是[batch_size, time-step, input_dim]
,而不是[batch_size, time-step, hidden_unit_length]
,所以我认为64、32对应X输入具有64个功能,而LSTM-32每次具有32个功能,步骤。