web-dev-qa-db-fra.com

Keras - Ajout d'un mécanisme d'attention à un modèle LSTM

Avec le code suivant:

model = Sequential()

num_features = data.shape[2]
num_samples = data.shape[1]

model.add(
    LSTM(16, batch_input_shape=(None, num_samples, num_features), return_sequences=True, activation='tanh'))
model.add(PReLU())
model.add(Dropout(0.5))
model.add(LSTM(8, return_sequences=True, activation='tanh'))
model.add(Dropout(0.1))
model.add(PReLU())
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))

J'essaie de comprendre comment puis-je ajouter un mécanisme d'attention avant la première couche LSTM. J'ai trouvé le GitHub suivant: keras-attention-mécanisme par Philippe Rémy mais je n'ai pas pu trouver exactement comment l'utiliser avec mon code.

Je voudrais visualiser le mécanisme d'attention et voir quelles sont les caractéristiques sur lesquelles le modèle se concentre.

Toute aide serait appréciée, notamment une modification de code. Merci :)

8
Shlomi Schwartz

Vous pouvez trouver un exemple de la façon d'utiliser un LSTM avec un mécanisme d'activation dans Keras dans ce Gist

https://Gist.github.com/mbollmann/ccc735366221e4dba9f89d2aab86da1e

Et dans la réponse suivante sur SO:

Comment ajouter un mécanisme d'attention en keras?

Et pour visualiser vos activations, vous pouvez utiliser le référentiel suivant https://github.com/philipperemy/keras-activations

J'espère que cela a aidé :)

5
hzitoun