Я думаю, вы должны одновременно вводить маску каждого образца в модель.
Вот рекомендуемый код:
from keras.layers import Multiply
main_input = Input(shape=(None, 2, 100, 100), dtype='float32', name='input')
mask=Input(shape=(1, 100, 100), dtype='float32', name='mask')
hidden = ConvLSTM2D(filters=16,
kernel_size=(5, 5),
padding='same',
return_sequences=False,
data_format='channels_first')(main_input)
output = Conv2D(filters=1,
kernel_size=(1, 1),
padding='same',
activation='sigmoid',
kernel_initializer='glorot_uniform',
data_format='channels_first',
name='output')(hidden)
output_with_mask=Multiply()([output, mask])
model=Model([main_input, mask], output_with_mask)
Сводка следующая:
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input (InputLayer) (None, None, 2, 100, 0
__________________________________________________________________________________________________
conv_lst_m2d_7 (ConvLSTM2D) (None, 16, 100, 100) 28864 input[0][0]
__________________________________________________________________________________________________
output (Conv2D) (None, 1, 100, 100) 17 conv_lst_m2d_7[0][0]
__________________________________________________________________________________________________
mask (InputLayer) (None, 1, 100, 100) 0
__________________________________________________________________________________________________
multiply_7 (Multiply) (None, 1, 100, 100) 0 output[0][0]
mask[0][0]
==================================================================================================
Total params: 28,881
Trainable params: 28,881
Non-trainable params: 0
__________________________________________________________________________________________________