← Tous les exercices
Dropout : éteindre au hasard et corriger l'échelle
Partie 3 · ★★★
Pendant l'apprentissage, le dropout éteint chaque valeur avec une probabilité p ; les valeurs gardées sont multipliées par 1 / (1 − p) pour que le neurone suivant reçoive en moyenne la même somme qu'à l'évaluation, où tout passe. Pour que ce soit déterministe, le tirage est fourni : masque (1 = gardé, 0 = éteint), celui du cours avec p = 0,5.
Complète la fonction (un paramètre entrainement joue le rôle de model.train() / model.eval()) et applique-la à 10 valeurs égales à 1.
def facteur_dropout(p): return 1 / (1 - ___) def dropout(valeurs, masque, p, entrainement): if not entrainement: return list(valeurs) f = facteur_dropout(p) return [v * m * f for v, m in zip(valeurs, masque)] x = [1] * 10 masque = [0, 0, 1, 0, 0, 0, 1, 1, 0, 1] sortie_train = dropout(x, masque, 0.5, True) sortie_eval = dropout(x, masque, 0.5, ___) somme_train = sum(sortie_train) somme_eval = sum(sortie_eval)
Ctrl/⌘+Entrée