tf.keras.layers.TimeDistributed
This wrapper allows to apply a layer to every temporal slice of an input.
输入至少应当有3个维度,第一个维度被函数默认为是一个临时的维度。
考虑一个具有32个样本的样本集合,每个样品都是由10个16维的向量组成。这个batch的输入shape就应当是(32,10,16),不包括样本个数维度的输入shape是(10,16)。
这个时候就可以使用TimeDistributed来对10个向量每个向量添加一个Dense层。此时输出是(32,10,8)维度的。
1 | model = Sequential() |
对于一个子序列层,不需要输入input_shape参数
1 | model.add(TimeDistributed(Dense(32))) |
输出尺寸为(32, 10, 32).
同样TimeDistributed可以用于任何层,比如Conv2D layer:
1 | model = Sequential() |