Keras 3 API 文档 / 层 API / 循环层 / 时间分布层

时间分布层

[source]

TimeDistributed class

keras.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)的二进制张量,指示是否应屏蔽给定的时间步. 此参数传递给被包装的层(仅当该层支持此参数时).