我知道这个主题有很多问题,但是我不明白为什么在我看来这两种选择都是可行的 我在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
是否会因为期望二维输入而导致编译错误?
答案 0 :(得分:4)
在您的情况下,您定义的两个模型是相同的。
这是因为您使用了return_sequences=True
参数,这意味着Dense
层像TimeDistributedDense
一样应用于每个时间步,但是如果您切换到{{1} },那么这两个模型并不完全相同,尽管版本不是False
,但在TimeDistributedDense
版本中会引发错误。
对于类似情况,也提供了更详尽的说明here。