我目前正在与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)使用密集层将值序列变换为所需的输出(我不知道应该如何,模型的目标是什么?)。