Keras 3 API 文档 / 层 API / 循环层 / TimeDistributed 层

TimeDistributed 层

[源]

TimeDistributed

keras.layers.TimeDistributed(layer, **kwargs)

这个包装器允许将一个层应用于输入的每个时间切片。

每个输入应至少是 3D 的,并且第一个输入的索引为一的维度将被视为时间维度。

考虑一个包含 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)

因为 TimeDistributedConv2D 的同一个实例应用于每个时间步,所以在每个时间步都使用了同一组权重。

参数

调用参数

  • inputs: 形状为 (batch, time, ...) 的输入张量或嵌套张量,其中每个张量的形状均为 (batch, time, ...)。
  • training: Python 布尔值,指示该层应在训练模式还是推理模式下运行。此参数将传递给被包装的层(仅当该层支持此参数时)。
  • mask: 形状为 (samples, timesteps) 的二进制张量,指示是否应屏蔽给定的时间步。此参数将传递给被包装的层(仅当该层支持此参数时)。