Каким должен быть правильный размер вывода слоя внимания? - PullRequest
0 голосов
/ 04 января 2019

Я строю модель слоя внимания LSTM +.Согласно моему пониманию слой внимания присваивает веса каждому слову входной последовательности.Следовательно, вывод уровня внимания должен быть (Нет, 280).Тем не менее, я получаю (Нет, 240), что означает, что уровень внимания изучает внимание над скрытыми состояниями LSTM.

Где я здесь ошибаюсь?

MAX_SEQUENCE_LENGTH=140
EMBEDDING_DIM = 300
model = Sequential()
model.add(Embedding(len(word_index) + 1,
                        EMBEDDING_DIM,
                        weights=[embedding_matrix],
                        input_length=MAX_SEQUENCE_LENGTH,
                        trainable=False))


model.add(Bidirectional(CuDNNLSTM(120, return_sequences=True), input_shape= 
(train_X.shape[1], EMBEDDING_DIM)))
model.add(Attention(MAX_SEQUENCE_LENGTH))
# model.add(Flatten())
model.add(Dense(100,activation='relu'))
model.add(Dense(1, activation='sigmoid'))
print(model.summary())

Слой (тип) --- Форма выхода --- Параметр #

embedding_1 (Embedding) ---- (Нет, 140, 300) --- 45720000


двунаправленный_1 (Двунаправленный (Нет, 140, 240) --- 405120


Внимание_1 (Внимание)--- (Нет, 240) --- 380


плотность_1 (Плотный) --- (Нет, 100) --- 24100


плотность_2 (Плотный)--- (Нет, 1) --- 101

Всего параметров: 46 499 701 Обучаемые параметры: 429 701 Необучаемые параметры: 45,720 000


Нет

...