Плотный слой Keras после LSTM с return_sequence = True - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь переопределить эту статью 1 в Керасе, поскольку авторы использовали PyTorch 2 . Вот сетевая архитектура: enter image description here Что я сделал до сих пор:

number_of_output_classes = 1
hidden_size = 100
direc = 2
lstm_layer=Bidirectional(LSTM(hidden_size, dropout=0.2, return_sequences=True))(combined) #shape after this step (None, 200) 
#weighted sum and attention should be here
attention = Dense(hidden_size*direc, activation='linear')(lstm_layer) #failed trial
drop_out_layer = Dropout(0.2)(attention)    
output_layer=Dense(1,activation='sigmoid')(drop_out_layer) #shape after this step (None, 1)

Я хочу включить слой внимания и последний слой FF после LSTM, но у меня возникают ошибки из-за размеров и опции return_sequence = True.

1 Ответ

0 голосов
/ 19 марта 2019

Это задача классификации последовательности. Классификация последовательностей - это сопоставление «многие к одному», где вы вводите несколько временных шагов, помеченных для одного класса. В этом случае входные данные должны иметь форму (batch_size, time_steps, channel), а выходные данные должны иметь форму (batch_size, channel). Если аргумент return_sequences класса LSTM равен True, выходные данные будут иметь форму (batch_size, time_steps, channels). Подача этого в плотные слои и выпадающий слой не уменьшит количество измерений. Чтобы уменьшить число измерений до двух, вы должны установить return_sequences аргумент последнего слоя LSTM на True. В вашем случае

lstm_layer=Bidirectional(LSTM(hidden_size, dropout=0.2, return_sequences=False))(combined)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...