我已经浏览了official documentation,但仍然无法理解Keras模型中的TimeDistributed
实际上是什么?
我无法理解TimeDistributed
和TimeDistributedDense
之间的区别?有人会什么时候使用TimeDistributedDense
?它只是为了减少训练数据集吗?它有其他好处吗?
任何人都可以用一个精确的例子来解释这两种类型的图层包装器的作用吗?
答案 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)
TimeDistributedDense
与TimeDistributed
相同,唯一的区别是TimeDistributed
可以与不同类型的图层一起使用,而不仅仅是密集图层。
Keras文档说明了TimeDistributed
:
“请注意,这完全等同于使用layers.core.TimeDistributedDense
。但TimeDistributed
的不同之处在于它可以与任意图层一起使用,而不仅仅是密集版,例如Convolution2D
层“