Keras 3 API 文件 / 層 API / 核心層 / 遮罩層

遮罩層

[原始碼]

Masking 類別

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

使用遮罩值來跳過時間步,以遮罩序列。

對於輸入張量中的每個時間步(張量中的維度 #1),如果該時間步中輸入張量的所有值都等於 mask_value,則該時間步將在所有下游層中被遮罩(跳過)(只要它們支持遮罩)。

如果任何下游層不支持遮罩,但接收到這樣的輸入遮罩,則會引發例外。

範例

考慮形狀為 (samples, timesteps, features) 的 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 的遮罩值表示。