我目前正在与Keras一起使用LSTM,我对TimeDistributed层有疑问。

假设我有一个TimeDistributed层,该输入将类似(batch_size,timesteps,num_features1)的内容作为输入。它将输出类似(batch_size,timesteps,num_features2)的内容。

我想改为输出类似(batch_size,num_features2)的内容。可能吗 ?

它将是将具有return_sequence = True的LSTM层堆叠到一个密集层(使用TimeDistributed层),然后返回到接受诸如(batch_size,nb_features)之类的输入的“经典”密集层。

提前致谢 !

贝努瓦

最佳答案

我不确定是否确切了解您想要什么,所以我将在这里放置一个我认为您想要的网络。如果不是,请用所需的网络草稿和每个步骤的形状来编辑您的问题。
知道您想要通过该网络实现的目标也将更加容易。

model = sequential()
# shape = (None,timesteps, num_feat1)
model.add(TimeDistributed(Dense(num_feat2))
# shape = (None,timesteps, num_feat2)
model.add(LSTM(1, return_sequence=True))
# shape = (None, timesteps, 1)
model.add(Flatten())
# shape = (None, timesteps)
model.add(Dense(num_outputs_desired))
# shape = (None, outputs)


那是你要的吗? (1)在每个时间步上均以密集层时间均匀地转换初始特征;(2)用lstm处理序列,在每个步骤处返回1值;(3)使用密集层将值序列变换为所需的输出(我不知道应该如何,模型的目标是什么?)。

09-17 12:45