Я тренирую LSTM в Керасе:
iclf = Sequential()
iclf.add(Bidirectional(LSTM(units=10, return_sequences=True, recurrent_dropout=0.3), input_shape=(None,2048)))
iclf.add(TimeDistributed(Dense(1, activation='sigmoid')))
Вход в каждую ячейку - это вектор 2048, который известен и не нуждается в изучении (если хотите, это вложение ELMo слов во входных предложениях). Поэтому здесь у меня нет слоя Embedding.
Поскольку входные последовательности имеют переменную длину, они дополняются с помощью pad_sequences
:
X = pad_sequences(sequences=X, padding='post', truncating='post', value=0.0, dtype='float32')
Теперь я хочу сказать LSTM игнорировать эти дополненные элементы. Официальный способ - использовать слой Embedding с mask_zero=True
. Но здесь нет слоя для встраивания. Как я могу сообщить LSTM, чтобы маскировать нулевые элементы?