Une meilleure classification de sentiments
Dans cet exercice, vous revenez au problème de classification de sentiments vu au chapitre 1.
Vous allez ajouter de la complexité au 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 prendre en compte des textes plus longs. Vous ajouterez également 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é pendant 10 époques et ses poids sont disponibles dans le fichier model_weights.h5.
Les modules suivants sont chargés dans l’environnement : Sequential, Embedding, LSTM, Dropout, Dense.
Cet exercice fait partie du cours
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras
Instructions
- Ajoutez une couche
Embeddingen première couche du modèle. - Ajoutez une deuxième couche
LSTMavec 64 unités enrenvoyantles séquences. - Ajoutez une couche
Densesupplémentaire avec 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 cet exemple de code.
# 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)))