如何指定我想要输出 LSTM 中的哪些单元?

数据挖掘 lstm 代码
2022-03-05 22:54:44

我在大多数代码示例中看到了这个代码概念(使用 Keras 库)LSTM

model.add(LSTM(X))
model.add(Dense(Y))

但我真的不知道我在输入端是否有 10 个时间步长并且需要输出中的最后一个时间步长以下代码是否正确?

model.add(LSTM(10))
model.add(Dense(1))

或者,如果我有 10 个输入时间步长并且需要 10 个输出时间步长(我的意思是我需要所有单元的所有输出)以下代码是否正确?

model.add(LSTM(10))
model.add(Dense(10))

如果我有 1 层有 10 个单元,我应该如何指定LSTM,我需要所有 10 个输出?或者我需要 10 单元的最后一个输出?还是单元 5 到 10 的最后 5 个输出?

1个回答

如果您使用:

LSTM(10 , return_sequences = True)

你只会得到一些大小的输出(batch_size,num_timesteps,10)。LSTM 单元大小的“10”是您应该调整的超参数。但是,您想要的是 (batch_size, num_timesteps, num_features) 的大小。这就是为什么要在 LSTM 层之后放置一个 Dense 层的原因。话虽如此,您还需要在 Dense 层周围添加一个 TimeDistributed 包装器,以便将一个 Dense 层应用于每个时间步(1):

TimeDistributed(Dense(num_features))

现在 TD 密集层的输出大小为:(batch_size, num_timesteps, num_features),我假设这就是您想要的。您必须将 Y 数据设置为适当的大小才能使其正常工作。它必须是大小(batch_size、num_timesteps、num_features)。你提到你很想知道如何使用它的一部分。在预测时,训练后,你会调用你的 model.predict,它会返回大小为 (batch_size, num_timesteps, num_features) 的东西。您可以使用 numpy 数组切片来访问您想要的内容。