Keras 3 API文档 / 层API / 核心层 / Masking层

掩码层

[源代码]

Masking

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

使用掩码值跳过时间步来掩盖序列。

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

如果任何不支持掩码的下游层接收到这样的输入掩码,将会引发一个异常。

示例

考虑一个NumPy数据数组x,其形状为(样本数, 时间步数, 特征数),将喂给LSTM层。您想掩盖第3个和第5个时间步,因为您缺乏这些时间步的数据。您可以

  • 设置x[:, 3, :] = 0.x[:, 5, :] = 0.
  • 在LSTM层之前插入一个带有mask_value=0.Masking
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的掩码值表示。