Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras
David Cecchini
Data Scientist
# Construire et compiler le modèle model = Sequential()model.add(Embedding(10000, 128))model.add(LSTM(128, dropout=0.2))model.add(Dense(1, activation='sigmoid'))model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
La même architecture peut être utilisée
# Construire le modèle model = Sequential() model.add(Embedding(10000, 128)) model.add(LSTM(128, dropout=0.2))# La couche de sortie a `num_classes` unités et utilise `softmax` model.add(Dense(num_classes, activation="softmax"))# Compiler le modèle model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ...
Jeu de données 20 News Groups
sklearn.datasets import fetch_20newsgroups# Importer la fonction de chargement des données from sklearn.datasets import fetch_20newsgroups# Télécharger les ensembles d'entraînement et de test news_train = fetch_20newsgroups(subset='train')news_test = fetch_20newsgroups(subset='test')
Les données possèdent les attributs suivants :
news_train.DESCR : documentation.news_train.data : textes.news_train.filenames : chemins des fichiers sur le disque.news_train.target : index numériques des classes.news_train.target_names : noms uniques des classes.# Importer les modules from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.utils import to_categorical# Créer et ajuster le tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(news_train.data)# Créer les variables (X, Y) X_train = tokenizer.texts_to_sequences(news_train.data) X_train = pad_sequences(X_train, maxlen=400) Y_train = to_categorical(news_train.target)
Entraîner le modèle sur les données d'entraînement
# Entraîner le modèle
model.fit(X_train, Y_train,
batch_size=64, epochs=100)
# Évaluer sur les données de test
model.evaluate(X_test, Y_test)
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras