Programmez votre propre opération de regroupement (pooling)
Comme nous l'avons déjà vu, les CNN peuvent comporter un très grand nombre de paramètres. On ajoute souvent des couches de regroupement (pooling) entre les couches de convolution d'un réseau neuronal pour résumer leurs sorties de façon condensée et réduire le nombre de paramètres dans la couche suivante du réseau. Cela peut être utile si vous souhaitez entraîner le réseau plus rapidement, ou si vous n'avez pas assez de données pour apprendre un très grand nombre de paramètres.
On peut décrire une couche de regroupement comme un type particulier de convolution. Pour chaque fenêtre de l'entrée, elle trouve la valeur maximale de pixel et ne transmet que ce pixel. Dans cet exercice, vous allez programmer votre propre opération de max pooling, en vous appuyant sur le code que vous avez déjà utilisé pour écrire une opération de convolution bidimensionnelle.
Cette activité fait partie du cours
Modélisation d'images avec Keras
Instructions de l’exercice
- Indexez dans le tableau d'entrée (
im) et sélectionnez la bonne fenêtre. - Trouvez le maximum dans cette fenêtre.
- Inscrivez-le dans l'entrée correspondante du tableau de sortie (
result).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Result placeholder
result = np.zeros((im.shape[0]//2, im.shape[1]//2))
# Pooling operation
for ii in range(result.shape[0]):
for jj in range(result.shape[1]):
result[ii, jj] = np.max(____)