Die Faltungsschichten und Poolschichten selbst sind unabhängig von den Eingabedimensionen. Die Ausgabe der Faltungsschichten hat jedoch unterschiedliche räumliche Größen für Bilder unterschiedlicher Größe, und dies verursacht ein Problem, wenn wir danach eine vollständig verbundene Ebene haben (da unsere vollständig verbundene Ebene eine Eingabe mit fester Größe erfordert). Hierfür gibt es mehrere Lösungen:
1. Globales Pooling: Vermeiden Sie vollständig verbundene Layer am Ende der Faltungs-Layer und verwenden Sie stattdessen Pooling (z. B. Global Average Pooling), um Ihre Feature-Maps von einer Form von (N, H, W, C) (vor dem globalen Pool) zu reduzieren ) zu formen (N, 1,1, C) (nach globalem Pool), wobei:
N = Anzahl der Minibatch-Proben
H = räumliche Höhe der Merkmalskarte
W = räumliche Breite der Merkmalskarte
C = Anzahl der Merkmalskarten (Kanäle)
As Wie zu sehen ist, ist die Ausgabedimensionalität (N * C) nun unabhängig von der räumlichen Größe (H, W) der Merkmalskarten. Im Falle einer Klassifizierung können Sie dann eine vollständig verbundene Ebene verwenden, um die Protokolle für Ihre Klassen abzurufen.
2. Pooling mit variabler Größe:Verwenden Sie Pooling-Regionen mit variabler Größe, um dieselbe Feature-Map-Größe für verschiedene Eingabegrößen zu erhalten.
3. Zuschneiden / Ändern der Größe / Auffüllen von Eingabebildern: Sie können versuchen, Ihre Eingabebilder neu zu skalieren / zuzuschneiden / aufzufüllen , damit alle dieselbe Form haben.
Im Zusammenhang mit dem Transferlernen möchten Sie möglicherweise Eingaben unterschiedlicher Größe als die ursprünglichen Eingaben verwenden, mit denen das Modell trainiert wurde. Hier sind einige Optionen, um dies zu tun:
4. Neue vollständig verbundene Ebenen erstellen: Sie können die ursprünglichen vollständig verbundenen Ebenen vollständig entfernen und eine neue vollständig verbundene Ebene mit der erforderlichen Dimensionalität initialisieren und von Grund auf neu trainieren.
5. Behandeln Sie die vollständig verbundene Ebene als Faltung: Normalerweise formen wir die Feature-Maps von (N, H, W, C) nach (N, H * W * C) um, bevor wir sie der vollständig verbundenen Ebene zuführen. Sie können die vollständig verbundene Schicht aber auch als Faltung mit einem Empfangsfeld von (H, W) behandeln. Dann können Sie diesen Kernel einfach mit Ihren Feature-Maps zusammenfassen, unabhängig von ihrer Größe (verwenden Sie bei Bedarf keine Auffüllung) [
http://cs231n.github.io/transfer-learning/ ].