On souhaite entraîner un réseau à reconnaître des chiffres et des lettres. Pour cela, nous utilisons deux corpus :
mnist
dèjà vu en cours et en td,
letters
qui est un échantillon extrait d'un corpus plus conséquent : emnist
La clellule suivante permet de charger les données et définit la fonction load_letters
. Cette fonction réalise une tâche semblable à la fonction load_data
de mnist
.
Remarque : le chargement du corpus peut prendre du temps, la cellule est donc à exécuter une seule fois.
import numpy as np
import pandas as pa
letters_train = pa.read_csv(
'https://www.labri.fr/perso/zemmari/datasets/emnist/emnist-letters-train.csv',
header=None)
letters_test = pa.read_csv(
'https://www.labri.fr/perso/zemmari/datasets/emnist/emnist-letters-test.csv',
header=None)
def load_letters():
X_train = np.array(letters_train.iloc[:, 1:785])
y_train = np.array(letters_train.iloc[:, 0])
y_train = y_train - 1
X_test = np.array(letters_test.iloc[:, 1:785])
y_test = np.array(letters_test.iloc[:, 1])
y_test = y_test -1
X_train = np.reshape(X_train, (X_train.shape[0], 28, 28))
X_test = np.reshape(X_test, (X_test.shape[0], 28, 28))
return (X_train, y_train), (X_test, y_test)
Chergez les données et faites les formatages nécessaires.
Définissez un réseau permettant de classifier les lettres.
Testez différentes architectures avec différents hyperparamètres.
Expliquez à chaque fois vos choix et vos résultats.
On souuhaite à présent disposer d'un réseau permettant de classifier une image soit en lettre, soit en chiffre.
Faites les manipulations nécessaires pour constituer votre corpus de données. Pour cela, vous pouvez utiliser les deux fonctions load_data()
de mnist
et load_letters()
de la cellule précédente.
Définissez, testez et expliquez des architectures permettant de différentier les deux catégories