在Keras中,TimeDistributed层的作用是什么?


82

我试图了解TimeDistributed包装器在Keras中的作用。

我得到了TimeDistributed“将层应用于输入的每个时间片”。

但是我做了一些实验,却得到了我无法理解的结果。

简而言之,对于LSTM层,TimeDistributed和Just Dense层的结果相同。

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)

对于这两个模型,我得到的输出形状为(None,10,1)

在RNN层之后,谁能解释TimeDistributed和Dense层之间的区别?


1
目前,sem没有区别,在此进行讨论。我认为最初的目的是在使Dense输入变平然后重新整形的层之间进行区分,从而连接不同的时间步长并具有更多参数,并TimeDistributed保持时间步长分开(因此具有较少的参数)。在您的情况下,Dense应该有500个参数,TimeDistributed只有50个
gionni

@gionni不,它具有相同数量的参数(均为6)。那么atm几乎没有区别吗?
Buomsoo Kim,

是的,正是这些,如果有差异,它们将具有的参数数量。目前没有
gionni '17

Answers:


82

keras-建立顺序模型时-通常第二个维度(一个样本维度之后)与一个time维度相关。这意味着,例如,如果您的数据5-dim(sample, time, width, length, channel)您在一起,则可以沿时间维度使用TimeDistributed(适用于4-dimwith (sample, width, length, channel))应用卷积层(将相同的层应用于每个时间片)以获得5-d输出。

随着案情Dense的是,在keras2.0版本Dense默认情况下只应用于最后一个维度(例如,如果你申请Dense(10)输入与形状(n, m, o, p),你会得到与形状输出(n, m, o, 10)),所以你的情况DenseTimeDistributed(Dense)是等价的。


3
有一个使用TimeDistributed包装模型本身的示例。将其应用于Input张量时,与仅map将模型的a应用于包含每个切片的列表的模型相比,这有什么区别Input吗?
CMCDragonkai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.