Avendo espresso la convoluzione in forma compatta:
tale formula si può declinare elemento per elemento, tenendo conto che:
- l’asse cresce verso destra,
- l’asse cresce verso il basso,
- l’indice corrisponde allo spostamento orizzontale (),
- l’indice corrisponde allo spostamento verticale ().
Dunque, fissata la posizione , si ottiene la forma locale:
Dettaglio: risultato delle convoluzioni 2D per canale
Per ciascun canale di input , l’operazione
restituisce uno scalare: il valore in ottenuto dalla convoluzione 2D del kernel sul canale .
- è lo spostamento orizzontale (asse ), è lo spostamento verticale (asse ).
- Il padding garantisce che anche ai bordi siano disponibili tutte le posizioni del kernel.
Ripetendo questo calcolo per tutti i , si ottengono scalari.
Tali scalari vengono poi sommati elemento per elemento:
e infine si applica bias e attivazione:
📊 Riepilogo passo‑passo per posizione
Passo Descrizione 1 Per ogni : calcola sommando i prodotti su tutti gli offset . 2 Somma i risultati: . 3 Aggiungi il bias: . 4 Applica la funzione di attivazione: .
Esempio

Per ogni canale di uscita e per ogni posizione , si calcola:
- la sommatoria su itera su ciascun canale di input
- la tripla sommatoria accumula i contributi dei kernel
- il risultato in è un singolo valore che, a valle dell’applicazione di , diventa l’entry della feature map
| Dimensioni | ||
|---|---|---|
| Input dims | immagine RGB | |
| Filtro per canale out | kernel da | |
| Patch spaziale valida | ||
| # output channels | quante feature map vogliamo | |
| Output dims | patch impilate | |
| Parametri per filtro | pesi di un singolo filtro | |
| Parametri totali layer | pesi del layer |