Маскирование нулевых входов в LSTM в кератах без использования встраивания - PullRequest
0 голосов
/ 06 ноября 2018

Я тренирую 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, чтобы маскировать нулевые элементы?

...