← Tous les exercices
Moyenne globale contre max pooling : la position perdue
Partie 4 · ★★★★
Le max pooling 2 × 2 efface les petits décalages, mais si le motif change de zone, son résumé change. ResNet-18 remplace chacune de ses 512 cartes par sa moyenne (global average pooling) : elle dit si le motif est présent, pas où.
Reprends les cartes du coin (organe, puis un pixel plus bas). Écris moyenne_globale, compare avec le max pooling 2 × 2 fourni, puis compte les paramètres d'une couche dense à une sortie qui lit 25 088 valeurs à plat ou 512 moyennes.
carte_coin = [[0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], [0, 0, 0, 0]] carte_bas = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]] carte_pleine = [[1] * 4 for _ in range(4)] def max_pool_2x2(carte): return [[max(carte[i][j], carte[i][j + 1], carte[i + 1][j], carte[i + 1][j + 1]) for j in (0, 2)] for i in (0, 2)] def moyenne_globale(carte): return sum(sum(ligne) for ligne in carte) / (len(carte) * len(carte[___])) mp_change = max_pool_2x2(carte_coin) != max_pool_2x2(carte_bas) g_coin = moyenne_globale(carte_coin) g_bas = moyenne_globale(carte_bas) g_pleine = moyenne_globale(carte_pleine) memes_moyennes = g_coin == ___ dense_a_plat = 25088 * 1 + 1 dense_moyenne = 512 * 1 + 1
Ctrl/⌘+Entrée