Masking
类keras.layers.Masking(mask_value=0.0, **kwargs)
通过使用掩码值来跳过时间步长,从而对序列进行掩码。
对于输入张量(张量中的维度 #1)中的每个时间步长,如果该时间步长处输入张量中的所有值都等于mask_value
,则该时间步长将在所有下游层中被掩码(跳过)(只要它们支持掩码)。
如果任何下游层不支持掩码但仍收到此类输入掩码,则会引发异常。
示例
考虑一个形状为(样本数, 时间步长数, 特征数)
的 NumPy 数据数组x
,将其馈送到 LSTM 层。您希望掩码时间步长 #3 和 #5,因为您缺乏这些时间步长的数据。您可以
x[:, 3, :] = 0.
和 x[:, 5, :] = 0.
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)
# The time step 3 and 5 will be skipped from LSTM calculation.
注意:在 Keras 掩码约定中,掩码时间步长由False
的掩码值表示,而非掩码(即可用)时间步长由True
的掩码值表示。