TimeDistributed与TimeDistributedDense Keras

时间:2017-02-22 17:42:00

标签: python machine-learning neural-network keras keras-layer

我已经浏览了official documentation,但仍然无法理解Keras模型中的TimeDistributed实际上是什么?

我无法理解TimeDistributedTimeDistributedDense之间的区别?有人会什么时候使用TimeDistributedDense?它只是为了减少训练数据集吗?它有其他好处吗?

任何人都可以用一个精确的例子来解释这两种类型的图层包装器的作用吗?

2 个答案:

答案 0 :(得分:18)

所以 - 基本上,在Keras的早期版本中首先引入了TimeDistributedDense,以便逐步将Dense层应用于序列。 TimeDistributed是一个Keras包装器,它可以获得任何静态(非顺序)层并以顺序方式应用它。如果是,例如由于(d1, .., dn)包装,您的图层可以接受形状TimeDistributed的输入,通过应用提供给(sequence_len, d1, ..., dn)的图层,您的图层可以接受形状为X[0,:,:,..,:]的输入,{ {1}},X[1,:,...,:]...

这种用法的一个例子可能是使用例如通过应用X[len_of_sequence,:,...,:]TimeDistributed(conv_layer)应用于剪辑的每个帧,将预卷训练卷积层转换为短视频剪辑。它产生输出序列,然后可能被下一个重复或conv_layer层消耗。

很高兴知道TimeDistributed的使用已弃用,使用TimeDistributedDense会更好。

答案 1 :(得分:0)

TimeDistributedDenseTimeDistributed相同,唯一的区别是TimeDistributed可以与不同类型的图层一起使用,而不仅仅是密集图层。

Keras文档说明了TimeDistributed

“请注意,这完全等同于使用layers.core.TimeDistributedDense。但TimeDistributed的不同之处在于它可以与任意图层一起使用,而不仅仅是密集版,例如Convolution2D层“