Keras 3 API 文档 / 层 API / 核心层 / 遮罩层

遮罩层

[源文件]

Masking

keras.layers.Masking(mask_value=0.0, **kwargs)

通过使用遮罩值跳过时间步,来遮罩一个序列。

对于输入张量中的每个时间步(张量的维度 #1),如果该时间步输入张量中的所有值都等于 mask_value,那么该时间步将在所有下游层中被遮罩(跳过)(只要它们支持遮罩)。

如果任何下游层不支持遮罩,但接收到了这样的输入遮罩,则会引发异常。

示例

考虑一个 NumPy 数据数组 x,形状为 (样本数, 时间步数, 特征数),将其馈送到 LSTM 层。您想遮罩时间步 #3 和 #5,因为这些时间步的数据缺失。您可以

  • 设置 x[:, 3, :] = 0.x[:, 5, :] = 0.
  • 在 LSTM 层之前插入一个 Masking 层,并设置 mask_value=0.
samples, timesteps, features = 32, 10, 8
inputs = np.random.random([samples, timesteps, features]).astype(np.float32)
inputs[:, 3, :] = 0.
inputs[:, 5, :] = 0.

model = keras.models.Sequential()
model.add(keras.layers.Masking(mask_value=0.0))
model.add(keras.layers.LSTM(32))
output = model(inputs)
# The time step 3 and 5 will be skipped from LSTM calculation.

注意:在 Keras 遮罩约定中,被遮罩的时间步由遮罩值 False 表示,而未被遮罩(即可用)的时间步由遮罩值 True 表示。