我已经阅读了官方文档,但我仍然不明白在Keras模型中,TimeDistributed
这个层实际上是做什么的?
我无法理解TimeDistributed
和TimeDistributedDense
之间的区别。何时使用TimeDistributedDense
?它只是为了减少训练数据集吗?还有其他好处吗?
能否用一个精确的例子来解释这两种类型的层包装器所做的事情?
我已经阅读了官方文档,但我仍然不明白在Keras模型中,TimeDistributed
这个层实际上是做什么的?
我无法理解TimeDistributed
和TimeDistributedDense
之间的区别。何时使用TimeDistributedDense
?它只是为了减少训练数据集吗?还有其他好处吗?
能否用一个精确的例子来解释这两种类型的层包装器所做的事情?
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)
。
TimeDistributedDense
和 TimeDistributed
是相同的,唯一的区别是 TimeDistributed
可以与不同类型的层一起使用,而不仅仅是密集层。
Keras 文档中有关于 TimeDistributed
的说明:
"请注意,这与使用layers.core.TimeDistributedDense
完全等效。但是,TimeDistributed
与任意层一起使用,而不仅仅是 Dense 层,例如 Convolution2D 层"