如何在Keras中输出带有“TimeDistributed”图层的序列?

时间:2017-03-03 15:15:18

标签: machine-learning keras lstm

我目前正在与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)这样的输入

提前致谢!

Benoit

1 个答案:

答案 0 :(得分:0)

我不确定你完全理解你想要什么,所以我会在这里建立一个我认为你想要的网络。如果不是,请使用您想要的网络草稿和每个步骤的形状编辑您的问题。 通过此网络了解您想要实现的目标也更容易。

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)使用密集层将值序列转换为一个理想的输出(我不知道它应该是什么,你的模型的目的是什么?)。