Implémentation d'un modèle de classification from scratch

Initialisation des paramètres du modèle

Déclaration de l'opération softmax

Déclaration du modèle

Déclaration de la fonction de perte

Taux de bon classement

On peut évaluer le taux de bon classement via data_iter

Ici, Accumulator est une classe utilitaire permettant d'accumuler des sommes sur plusieurs variables. Dans la fonction evaluate_accuracy ci-dessus, nous créons 2 variables dans l'instance Accumulator pour stocker le nombre de prédictions correctes et le nombre de prédictions, respectivement. Ces deux variables seront accumulées au fur et à mesure que nous itérons sur l'ensemble de données.

Apprentissage

La boucle d'apprentissage de la régression softmax devrait vous sembler étonnamment proche de notre implémentation de la régression linéaire. Ici, nous remanions l'implémentation pour la rendre réutilisable. Tout d'abord, nous définissons une fonction pour s'entraîner pendant une époque (epoch). Notez que updater est une fonction générale pour mettre à jour les paramètres du modèle, qui accepte la taille du minibatch comme argument. Il peut s'agir d'un wrapper de la fonction d2l.sgd ou d'une fonction d'optimisation intégrée.

Avant de montrer l'implémentation de la fonction d'entraînement, nous définissons une classe utilitaire qui trace les données en animation. Encore une fois, c'est une classe qui est proposé sur stackoverflow et pas une création personnelle.

La fonction d'apprentissage suivante entraîne un modèle net sur un jeu de données d'apprentissage auquel on accède via train_iter pendant plusieurs époques (epoch), spécifiées par num_epochs. À la fin de chaque epoch, le modèle est évalué sur un jeu de données de test auquel on accède via test_iter. Nous allons utiliser la classe Animator pour visualiser la progression de l'apprentissage.

Pour une implémentation from scratch, nous utilisons la descente de gradient stochastique en minibatchs pour optimiser la fonction de perte du modèle avec un taux d'apprentissage de 0.1.

Prédiction

Maintenant que l'apprentissage est terminé, notre modèle est prêt à classifer des images. Pour une série d'images, nous allons comparer leurs étiquettes réelles (première ligne du texte de sortie) et les prédictions du modèle (deuxième ligne du texte de sortie).

Bilan