Salta al contenuto
Note per Studenti Esercizio - Dimensioni dei tensori di una CNN con minibatch (esempio d'esame 2)

Esercizio - Dimensioni dei tensori di una CNN con minibatch (esempio d'esame 2)

Teoria: Deep learning - reti profonde, CNN e addestramento con KerasQuadro del deep learning nel corso di IA. Un neurone calcola la somma pesata degli ingressi e applica una funzione di attivazione non lineare (soglia, sigmoide, ReLU, tanh); un perceptron a soglia realizza AND, OR e NOT ma non lo XOR (non linearmente separabile), che richiede 3 neuroni su due livelli; due livelli bastano per approssimare ogni funzione continua. Uscite: lineare per la regressione, sigmoide per due classi, softmax per più classi, con perdita di entropia incrociata. Addestramento con SGD a minibatch e backpropagation (passaggio in avanti e all'indietro, gradienti che si moltiplicano: svaniscono con sigmoide e tanh). CNN: kernel appreso, stride, padding, uscita (n+2p-k)/s+1, pooling; tensori; transfer learning e dropout. RNN con stato nascosto z_t=f(z_{t-1},x_t) e BPTT, LSTM con porte, autoencoder, VAE, GAN, modelli linguistici e trasformatori con attenzione. Pipeline Keras del laboratorio 11: Sequential, Conv2D, MaxPooling2D, Flatten, Dense, compile (Adam, perdita), fit, evaluate, predict, save.Deep learning - reti profonde, CNN e addestramento con Keras → (sezione 4, convoluzione e tensori) e Reti neurali convolutive (CNN)approfondimento: non nel programma di Telecomunicazioni. Una rete convolutiva (CNN) sostituisce gli strati densi con filtri piccoli che scorrono sull'immagine: ogni neurone vede solo una patch locale (campo recettivo) e i pesi del filtro sono condivisi in tutta l'immagine, quindi i parametri non dipendono dalla dimensione dell'immagine ($K^2C_{in}C_{out}+C_{out}$ per strato) e si conserva l'informazione spaziale. Dimensione dell'uscita: $\lfloor(W-K+2P)/S\rfloor+1$. Pooling (max 2x2, stride 2) sottocampiona e dà invarianza locale; i filtri 1x1 riducono i canali; struttura tipica CONV+ReLU, POOL, ..., FLATTEN, FC, SOFTMAX, addestrata con cross-entropy e backpropagation. Tre strati 3x3 hanno il campo recettivo di un 7x7 con meno parametri e più non linearità (VGG). Architetture: LeNet, AlexNet (ReLU, dropout, data augmentation), VGG, GoogLeNet (moduli Inception), ResNet (blocchi residui $H(x)=F(x)+x$), EfficientNet. Nel lab: CNN su Fashion-MNIST (241 546 parametri) e su CIFAR-10 (122 570).Reti neurali convolutive (CNN) →. Esercizio collegato: Esercizio - CNN su CIFAR-10 con Keras (laboratorio 11). Domanda 6 del quiz da 9 CFU e domanda 3 di quello da 6 CFU: stesso testo, opzioni in ordine diverso.

Testo. Una CNN è addestrata su immagini a colori RGB di 96×9696\times96 pixel, con minibatch di 24 immagini. Al primo livello si applicano 16 kernel di dimensione 3×3×33\times3\times3 con stride e padding, verticale e orizzontale, di 1 pixel. Qual è la dimensione dei tensori di ingresso e di uscita? Menu (per ciascuno): 96×96×1696\times96\times16; 32×32×3×1632\times32\times3\times16; 96×96×16×2496\times96\times16\times24; 96×96×396\times96\times3; 32×32×1632\times32\times16; 96×96×2496\times96\times24; 96×96×3×2496\times96\times3\times24; 32×32×16×2432\times32\times16\times24; 96×96×3×1696\times96\times3\times16; Nessuna delle opzioni.

Soluzione

Le opzioni scrivono le dimensioni come altezza ×\times larghezza ×\times canali ×\times immagini del minibatch. (Keras usa un altro ordine, batch per primo: (24,96,96,3)(24,96,96,3); il numero di valori è lo stesso.)

Ingresso: 96×96×3×2496\times96\times3\times24. Ogni immagine ha 96×9696\times96 pixel e 33 canali (rosso, verde, blu); il minibatch ne contiene 2424.

Uscita: 96×96×16×2496\times96\times16\times24.

  • Lato spaziale. Con ingresso n=96n=96, kernel k=3k=3, padding p=1p=1, stride s=1s=1: ⌊n+2p−ks⌋+1=96+2−31+1=96\left\lfloor\dfrac{n+2p-k}{s}\right\rfloor+1=\dfrac{96+2-3}{1}+1=96. Il padding di 1 con kernel 3×33\times3 e stride 1 conserva la dimensione ("same").
  • Profondità. Ogni kernel 3×3×33\times3\times3 copre tutti i 3 canali e produce una mappa di caratteristiche 96×9696\times96. Con 16 kernel si hanno 16 mappe: la profondità diventa 1616, qualunque fosse quella di ingresso.
  • Minibatch. Il livello elabora ogni immagine in modo indipendente: restano 2424 campioni.

Parametri del livello: 16⋅(3⋅3⋅3+1)=16⋅28=44816\cdot(3\cdot3\cdot3+1)=16\cdot28=448 (27 pesi più un bias per kernel), indipendenti dalla dimensione dell'immagine e dal minibatch. Il tensore di uscita ha 96⋅96⋅16⋅24=3 538 94496\cdot96\cdot16\cdot24=3\,538\,944 valori, circa 14,214{,}2 MB in virgola mobile a 32 bit.

Perché le altre opzioni sono sbagliate

  • 32×32×…32\times32\times\dots: sono le dimensioni di CIFAR-10, non di queste immagini; con padding e stride dati non c'è riduzione.
  • 96×96×396\times96\times3 o 96×96×1696\times96\times16 senza il 24: dimenticano il minibatch.
  • ⋯×16\dots\times16 al posto di ×24\times24 (per esempio 96×96×3×1696\times96\times3\times16): confondono il numero di kernel con la dimensione del minibatch. Il 16 è la profondità dell'uscita, il 24 il numero di immagini.
  • 96×96×2496\times96\times24: non ha canali.
  • 96×96×16×2496\times96\times16\times24 come ingresso: i 16 sono i kernel, non i canali dell'ingresso, che sono 3.
  • Nessuna delle opzioni: non vale, perché ci sono le risposte giuste.

Versione ripasso

Teoria: Deep learning - reti profonde, CNN e addestramento con KerasQuadro del deep learning nel corso di IA. Un neurone calcola la somma pesata degli ingressi e applica una funzione di attivazione non lineare (soglia, sigmoide, ReLU, tanh); un perceptron a soglia realizza AND, OR e NOT ma non lo XOR (non linearmente separabile), che richiede 3 neuroni su due livelli; due livelli bastano per approssimare ogni funzione continua. Uscite: lineare per la regressione, sigmoide per due classi, softmax per più classi, con perdita di entropia incrociata. Addestramento con SGD a minibatch e backpropagation (passaggio in avanti e all'indietro, gradienti che si moltiplicano: svaniscono con sigmoide e tanh). CNN: kernel appreso, stride, padding, uscita (n+2p-k)/s+1, pooling; tensori; transfer learning e dropout. RNN con stato nascosto z_t=f(z_{t-1},x_t) e BPTT, LSTM con porte, autoencoder, VAE, GAN, modelli linguistici e trasformatori con attenzione. Pipeline Keras del laboratorio 11: Sequential, Conv2D, MaxPooling2D, Flatten, Dense, compile (Adam, perdita), fit, evaluate, predict, save.Deep learning - reti profonde, CNN e addestramento con Keras →, Reti neurali convolutive (CNN)approfondimento: non nel programma di Telecomunicazioni. Una rete convolutiva (CNN) sostituisce gli strati densi con filtri piccoli che scorrono sull'immagine: ogni neurone vede solo una patch locale (campo recettivo) e i pesi del filtro sono condivisi in tutta l'immagine, quindi i parametri non dipendono dalla dimensione dell'immagine ($K^2C_{in}C_{out}+C_{out}$ per strato) e si conserva l'informazione spaziale. Dimensione dell'uscita: $\lfloor(W-K+2P)/S\rfloor+1$. Pooling (max 2x2, stride 2) sottocampiona e dà invarianza locale; i filtri 1x1 riducono i canali; struttura tipica CONV+ReLU, POOL, ..., FLATTEN, FC, SOFTMAX, addestrata con cross-entropy e backpropagation. Tre strati 3x3 hanno il campo recettivo di un 7x7 con meno parametri e più non linearità (VGG). Architetture: LeNet, AlexNet (ReLU, dropout, data augmentation), VGG, GoogLeNet (moduli Inception), ResNet (blocchi residui $H(x)=F(x)+x$), EfficientNet. Nel lab: CNN su Fashion-MNIST (241 546 parametri) e su CIFAR-10 (122 570).Reti neurali convolutive (CNN) →.

  • Uscita spaziale: ⌊(n+2p−k)/s⌋+1=(96+2−3)/1+1=96\lfloor(n+2p-k)/s\rfloor+1=(96+2-3)/1+1=96 (padding 1, stride 1: "same").
  • Profondità di uscita = numero di kernel (16); ogni kernel 3×3×33\times3\times3 copre i 3 canali. Minibatch invariato (24).
  • Ingresso 96×96×3×2496\times96\times3\times24; uscita 96×96×16×2496\times96\times16\times24. Parametri: 16⋅(27+1)=44816\cdot(27+1)=448.

Errori tipici: confondere i 16 kernel con il minibatch; dimenticare il minibatch; usare 32×3232\times32.

Teoria collegata