为什么我的 Keras LSTM 中不需要 TimeDistributed?

我知道这个话题有很多问题,但我不明白为什么在我的情况下这两种选择都是可能的。我在 LSTM 中的输入形状是 (10,24,2),我的 hidden_size 是 8。


model = Sequential()    

model.add(LSTM(hidden_size, return_sequences=True, stateful = True, 

               batch_input_shape=((10, 24, 2))))

model.add(Dropout(0.1))

为什么可以在下面添加这一行:


model.add(TimeDistributed(Dense(2))) # Option 1

或者这个:


model.add(Dense(2)) # Option 2

应该不会Option 2导致编译错误,因为它需要二维输入?


幕布斯6054654
浏览 174回答 1
1回答

红颜莎娜

在您的情况下,您定义的 2 个模型是相同的。这是因为您使用了return_sequences=True参数,这意味着该Dense层将应用于每个时间步,就像TimeDistributedDense但如果您切换到False那么 2 个模型不相同,并且在TimeDistributedDense版本的情况下会引发错误,尽管不在Dense一个中。对于类似的情况,这里也提供了更彻底的解释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python