我正在尝试使用LSTM
使用keras
构建模型。图片中描述了我要构建的模型结构。
在keras中,我知道创建这样的LSTM层应该遵循以下代码。
model = Sequential()
model.add(LSTM(4, input_shape=(3,1), return_sequences=True))
4是每个LSTM单元的输出大小。 return_sequence
配置many to many
结构。但是我不知道如何添加密集层来从LSTM细胞中获取所有信息并输出多个神经元。我什至不知道是否可能。我将不胜感激。
答案 0 :(得分:1)
此答案基于SimonC的答案。您可以添加展平层。根据您的目的,它可能有不同的方式
def model():
model = Sequential()
model.add(Dense(128, input_shape = (LSTM_WINDOW_SIZE,1)))
model.add(LSTM(units=5,
return_sequences=True))
model.add(Dense(1, activation = 'linear'))
model.add(Flatten())
model.add(Dense(1))
return model
LSTM_WINDOW_SIZE = 5
model3 = model()
model3.summary()
或((将Flatten
层移到Dense
层之前)
def model():
model = Sequential()
model.add(Dense(128, input_shape = (LSTM_WINDOW_SIZE,1)))
model.add(LSTM(units=5,
return_sequences=True))
model.add(Flatten())
model.add(Dense(1, activation = 'linear'))
model.add(Dense(1)) # redundant for this model, just for illustration
return model
LSTM_WINDOW_SIZE = 5
model3 = model()
model3.summary()
答案 1 :(得分:0)
如果您还希望获得大量输出,则可以使用TimeDistributed密集层。如果可以查看最后一个输出(从最后一个时间步长开始),可以删除return_sequences = True并插入一个Dense层(尽管多对一)
答案 2 :(得分:0)
您只需在LSTM层之后添加一个密集层,而无需将'return_sequences'设置为False (仅当您在另一个LSTM层之后有第二个LSTM层时才需要)。我最近制作了一个LSTM模型,以根据变量的历史来预测一些将来的值。这对我来说很好:
def model():
model = Sequential()
model.add(Dense(128, input_shape = (LSTM_WINDOW_SIZE,1)))
model.add(LSTM(units=5,
return_sequences=False)
model.add(Dense(1))
model.add(Activation('linear'))
return model
您可以根据需要删除第一个Dense层。