【发布时间】:2017-07-23 18:37:56
【问题描述】:
我目前正在使用 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) 等输入的“经典”密集层。
提前致谢!
贝努瓦
【问题讨论】:
-
这意味着你想压缩一个时间维度——你想怎么做?最流行的方法是
global poolingwrt。计时或获取最后一个输出。 -
这个想法可能是我可以返回
(batch_size,timesteps)之类的东西,而不是返回(batch_size,timesteps,num_features)。我会在global poolinglokk,谢谢。 -
关于你的问题的标题,问题是,TimeDistributed 被应用并保留时间维度,所以无论如何它都会返回时间序列。 TimeDistributed 唯一可以影响的是每个时间步的特征数量。您可以通过应用其输出的维度为 1 的图层将其缩减为一个特征,然后展平。但是你不能从(无,时间步长,特征)到(无,feat_1,feat-2)。我仍然不确定我得到你的问题
-
@NassimBen 我认为他想到达 (None, Timesteps, 1) => (None, Timesteps)。也许这可以通过添加每个时间维度的所有特征来完成。例如,如果 TimeDistributed 层给出 (None, Timesteps, 100) 作为输出,那么对于每个时间步长,应该将 100 维向量相加以给出单个值。也许这可以工作,但我不确定我们如何实现这一点。
标签: machine-learning keras lstm