TimeDistributed
classkeras.layers.TimeDistributed(layer, **kwargs)
这个包装器允许将一个层应用于输入的每个时间切片.
每个输入应至少为3D,并且第一个输入的索引为1的维度将被视为时间维度.
考虑一批32个视频样本,每个样本是128x128的RGB图像,采用channels_last
数据格式,跨越10个时间步.
输入批次的形状为(32, 10, 128, 128, 3)
.
然后,您可以使用TimeDistributed
将相同的Conv2D
层独立地应用于每个10个时间步:
>>> inputs = layers.Input(shape=(10, 128, 128, 3), batch_size=32)
>>> conv_2d_layer = layers.Conv2D(64, (3, 3))
>>> outputs = layers.TimeDistributed(conv_2d_layer)(inputs)
>>> outputs.shape
(32, 10, 126, 126, 64)
因为TimeDistributed
将相同的Conv2D
实例应用于每个时间戳,所以在每个时间戳使用相同的权重集.
参数:
layer: 一个keras.layers.Layer
实例.
调用参数:
inputs: 形状为(batch, time, ...)的输入张量或嵌套张量,
并且每个张量都有形状(batch, time, ...).
training: Python布尔值,指示层应在训练模式还是推理模式下运行.
此参数传递给被包装的层(仅当该层支持此参数时).
mask: 形状为(samples, timesteps)
的二进制张量,指示是否应屏蔽给定的时间步.
此参数传递给被包装的层(仅当该层支持此参数时).