为什么Keras序列到序列教程没有提到TimeDistributed图层包装器?

时间:2018-03-07 12:09:34

标签: python tensorflow keras

Keras sequence to sequence tutorial解释了序列到序列RNN的实现,甚至没有提到TimeDistributed layer wrapper的用法。 The accepted answer to another question in stackoverflow似乎暗示,使用TimeDistributed层对于分离Dense层中的各个时间步骤是必不可少的(这对我来说似乎是合理的)。

那么为什么在Keras教程中甚至没有提到TimeDistributed图层包装器呢?为了简单起见?或者本教程是否使用不需要TimeDistributed的架构?或者它是基于不包含或要求TimeDistributed的Keras版本?

1 个答案:

答案 0 :(得分:2)

对于Dense图层,它绝对是可选的,并没有任何区别。

密集图层的(当前)行为是对最后一个维度采取行动,而保持其他维度不变。 (在以前的版本中,如keras 1,这不是真的,你实际上需要TimeDistributed包装器)。

因此,如果您将(samples, steps, input_dimension)输入Dense图层,您将获得输出(samples, steps, units_or_output_dimension),这与TimeDistributed(Dense(...))完全相同。

对于其他图层,确实可能需要使用TimeDistributed。例如,当您在卷积网络中处理电影时,您可能希望2D卷积的输入形状为(samples, frames, imageWidth, imageHeight, channels),然后您需要TimeDistributed(Conv2D(...))才能获得额外的frames } 尺寸。