TimeDistributed和TimeDistributedDense在Keras中的区别

14

我已经阅读了官方文档,但我仍然不明白在Keras模型中,TimeDistributed这个层实际上是做什么的?

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

能否用一个精确的例子来解释这两种类型的层包装器所做的事情?

2个回答

20
基本上,早期版本的Keras中首先引入了TimeDistributedDense,以便将Dense层逐步应用于序列。 TimeDistributed是Keras的包装器,它可以使任何静态(非连续)层以顺序方式应用。因此,如果您的层接受形状为(d1,..,dn)的输入,那么通过应用提供给X [0,:,:,..,:] X [1,:,...,:] ...X [len_of_sequence,:,...,:] 的层,由于TimeDistributed包装器,您的层可以接受形状为(sequence_len,d1,...,dn)的输入。

这种使用的一个例子可能是将经过预训练的卷积层应用于短视频剪辑,方法是应用TimeDistributed(conv_layer),其中conv_layer被应用于剪辑的每个帧。 它产生输出序列,然后可以由下一个循环或TimeDistributed层消耗。

值得知道的是,使用TimeDistributedDense已被弃用,最好使用TimeDistributed(Dense)


0

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

Keras 文档中有关于 TimeDistributed 的说明:

"请注意,这与使用layers.core.TimeDistributedDense完全等效。但是,TimeDistributed 与任意层一起使用,而不仅仅是 Dense 层,例如 Convolution2D 层"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接