TimeDistributed 与 TimeDistributedDense Keras

Posted

技术标签:

【中文标题】TimeDistributed 与 TimeDistributedDense Keras【英文标题】:TimeDistributed vs. TimeDistributedDense Keras 【发布时间】:2017-07-12 22:11:37 【问题描述】:

我已经浏览了official documentation,但仍然无法理解TimeDistributed 在 Keras 模型中作为层的实际作用?

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

谁能用一个精确的例子来解释这两种类型的层封装器的作用?

【问题讨论】:

【参考方案1】:

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

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

很高兴知道TimeDistributedDense 的使用已贬值,最好使用TimeDistributed(Dense)

【讨论】:

【参考方案2】:

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

Keras 文档说关于 TimeDistributed

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

【讨论】:

以上是关于TimeDistributed 与 TimeDistributedDense Keras的主要内容,如果未能解决你的问题,请参考以下文章

Keras 中 TimeDistributed 层的作用是啥?

LSTM 或任何其他层的 TimeDistributed 包装器有啥用途

Keras 使用 TimeDistributed 预训练 CNN

为keras TimeDistributed图层按名称设置权重

为啥我的 Keras LSTM 不需要 TimeDistributed?

为啥不使用 Flatten 后跟 Dense 层而不是 TimeDistributed?