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

PassoDescrizione
1Per ogni : calcola sommando i prodotti su tutti gli offset .
2Somma i risultati: .
3Aggiungi il bias: .
4Applica 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 dimsimmagine RGB
Filtro per canale out kernel da
Patch spaziale valida
# output channelsquante feature map vogliamo
Output dims patch impilate
Parametri per filtropesi di un singolo filtro
Parametri totali layerpesi del layer