Gli strati convoluzionali e gli stessi pool pool sono indipendenti dalle dimensioni di input. Tuttavia, l'output degli strati convoluzionali avrà dimensioni spaziali diverse per immagini di dimensioni diverse e ciò causerà un problema se in seguito avremo uno strato completamente connesso (poiché il nostro livello completamente connesso richiede un input di dimensioni fisse). Esistono diverse soluzioni a questo:
1. Pool globale: evita i layer completamente collegati alla fine dei layer convoluzionali e utilizza invece il pool (come il pool medio globale) per ridurre le mappe delle caratteristiche da una forma di (N, H, W, C) (prima del pool globale ) per modellare (N, 1,1, C) (dopo il pool globale), dove:
N = Numero di campioni minibatch
H = Altezza spaziale della mappa delle caratteristiche
W = Larghezza spaziale della mappa delle caratteristiche
C = Numero di mappe delle caratteristiche (canali)
As si può vedere, la dimensionalità di output (N * C) è ora indipendente dalla dimensione spaziale (H, W) delle mappe caratteristiche. In caso di classificazione, è quindi possibile procedere con l'uso di un livello completamente collegato in alto per ottenere i log per le classi.
2. Pooling di dimensioni variabili:Utilizzare aree di pool di dimensioni variabili per ottenere le stesse dimensioni della mappa delle caratteristiche per dimensioni di input diverse.
3. Ritaglia / Ridimensiona / Pad immagini di input: puoi provare a ridimensionare / ritagliare / pad le tue immagini di input per avere tutte la stessa forma.
Nel contesto dell'apprendimento del trasferimento, è possibile che si desideri utilizzare input di dimensioni diverse rispetto agli input originali con cui è stato formato il modello. Ecco alcune opzioni per farlo:
4. Crea nuovi livelli completamente connessi: puoi abbandonare completamente i livelli originali completamente collegati e inizializzare un nuovo livello completamente connesso con la dimensionalità di cui hai bisogno e allenarlo da zero.
5. Tratta il livello completamente connesso come una convoluzione: normalmente, rimodelliamo le mappe delle caratteristiche da (N, H, W, C) a (N, H * W * C) prima di inviarlo al livello completamente collegato. Ma puoi anche trattare il livello completamente connesso come una convoluzione con un campo ricettivo di (H, W). Quindi, puoi semplicemente coinvolgere questo kernel con le tue mappe caratteristiche indipendentemente dalle loro dimensioni (usa il riempimento zero se necessario) [
http://cs231n.github.io/transfer-learning/ ].