Meilleure classification de sentiments
Dans cet exercice, vous reprenez le problème de classification de sentiments vu au chapitre 1.
Vous allez augmenter la complexité du modèle et améliorer sa précision. Vous utiliserez une couche Embedding pour entraîner des vecteurs de mots sur l'ensemble d'entraînement et deux couches LSTM pour tenir compte de textes plus longs. Vous ajouterez aussi une couche Dense supplémentaire avant la sortie.
Ce n'est plus un modèle simple et l'entraînement peut prendre du temps. Pour cette raison, un modèle préentraîné est disponible en chargeant ses poids avec la méthode .load_weights() de la classe keras.models.Sequential. Le modèle a été entraîné sur 10 époques et ses poids se trouvent dans le fichier model_weights.h5.
Les modules suivants sont déjà chargés dans l'environnement : Sequential, Embedding, LSTM, Dropout, Dense.
Cette activité fait partie du cours
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras
Instructions de l’exercice
- Ajoutez une couche
Embeddingcomme première couche du modèle. - Ajoutez une deuxième couche
LSTMde 64 unités qui « retourne » les séquences. - Ajoutez une couche
Densesupplémentaire de 16 unités. - Évaluez le modèle pour afficher la précision sur l'ensemble d'entraînement.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Build and compile the model
model = Sequential()
model.add(____(vocabulary_size, wordvec_dim, trainable=True, input_length=max_text_len))
model.add(____(64, return_sequences=____, dropout=0.2, recurrent_dropout=0.15))
model.add(LSTM(64, return_sequences=False, dropout=0.2, recurrent_dropout=0.15))
model.add(____(16))
model.add(Dropout(rate=0.25))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Load pre-trained weights
model.load_weights('model_weights.h5')
# Print the obtained loss and accuracy
print("Loss: {0}\nAccuracy: {1}".format(*model.____(X_test, y_test, verbose=0)))