Scrivi la tua operazione di pooling
Come abbiamo già visto, le CNN possono avere molti parametri. Gli strati di pooling sono spesso inseriti tra gli strati di convoluzione di una rete neurale per riassumerne gli output in modo compatto e ridurre il numero di parametri nello strato successivo della rete. Questo può aiutarci se vogliamo addestrare la rete più rapidamente o se non abbiamo abbastanza dati per apprendere un numero molto grande di parametri.
Uno strato di pooling può essere descritto come un particolare tipo di convoluzione. Per ogni finestra dell'input trova il valore di pixel massimo e lascia passare solo questo pixel. In questo esercizio, scriverai la tua operazione di max pooling, basandoti sul codice che hai usato in precedenza per implementare un'operazione di convoluzione bidimensionale.
Questo esercizio fa parte del corso
Image Modeling with Keras
Istruzioni dell'esercizio
- Indicizza nell'array di input (
im) e seleziona la finestra corretta. - Trova il massimo in questa finestra.
- Inserisci questo valore nella posizione corretta dell'array di output (
result).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____)