Keras camada atenção sobre LSTM

votos
6

Estou usando keras 1.0.1 Estou tentando adicionar uma camada atenção em cima de um LSTM. Isto é o que eu tenho até agora, mas ele não funciona.

input_ = Input(shape=(input_length, input_dim))
lstm = GRU(self.HID_DIM, input_dim=input_dim, input_length = input_length, return_sequences=True)(input_)
att = TimeDistributed(Dense(1)(lstm))
att = Reshape((-1, input_length))(att)
att = Activation(activation=softmax)(att)
att = RepeatVector(self.HID_DIM)(att)
merge = Merge([att, lstm], mul)
hid = Merge(sum)(merge)

last = Dense(self.HID_DIM, activation=relu)(hid)

A rede deve aplicar-se uma LSTM através da sequência de entrada. Em seguida, cada estado escondido da LSTM deve constituir a entrada para uma camada completamente ligada, sobre a qual um Softmax é aplicado. O softmax é replicado para cada dimensão oculta e multiplicado pelo LSTM estados ocultos elemento a elemento. Em seguida, o vector resultante deverá ser calculada a média.

EDIT : Isso compila, mas eu não tenho certeza se ele faz o que eu acho que deveria fazer.

input_ = Input(shape=(input_length, input_dim))
lstm = GRU(self.HID_DIM, input_dim=input_dim, input_length = input_length, return_sequences=True)(input_)
att = TimeDistributed(Dense(1))(lstm)
att = Flatten()(att)
att = Activation(activation=softmax)(att)
att = RepeatVector(self.HID_DIM)(att)
att = Permute((2,1))(att)
mer = merge([att, lstm], mul)
hid = AveragePooling1D(pool_length=input_length)(mer)
hid = Flatten()(hid)
Publicado 23/04/2016 em 13:55
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Aqui é uma implementação do LSTM atenção com Keras, e um exemplo de sua instanciação . Eu não tentei me, no entanto.

Respondeu 23/06/2016 em 15:30
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more