У меня есть следующая модель LSTM
words = Input(shape=(MAX_LEN,))
x = Embedding(*embedding_matrix.shape, weights=[embedding_matrix], trainable=False)(words)
x = Bidirectional(CuDNNLSTM(LSTM_UNITS, return_sequences=True),merge_mode='ave')(x)
x = Bidirectional(CuDNNLSTM(LSTM_UNITS, return_sequences=True),merge_mode='ave')(x)
Я хочу объединить первый и последний элементы из последовательности, возвращаемой последним слоем, а затем передать их в плотный слой. Я знаю, что у меня есть несколько вариантов агрегирования возвращаемой последовательности:
Using GlobalMaxPooling1D()(x) or GlobalAveragePooling1D()(x)
Using a TimeDistributed layer to apply a dense layer to each element of the sequence
Но, поскольку это двунаправленный LSTM, возможно, наиболее ценная информация закодирована в крайних значениях, а в середине - просто шум. Как я могу проверить эту гипотезу и получить доступ к этим двум элементам?