Keras 3 API 文档 / 层 API / 核心层 / 掩码层

掩码层

[source]

Masking class

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.)
model.add(keras.layers.LSTM(32))
output = model(inputs)
# 时间步长3和5将从LSTM计算中跳过.

注意:在Keras掩码约定中,掩码时间步长由 掩码值False表示,而非掩码(即可用)时间步长 由掩码值True表示.