wake-up-neo.com

Gewusst wie: Bestimmen des 'filter'-Parameters in der Keras Conv2D-Funktion

Ich fange gerade mit meiner ML-Reise an und habe ein paar Tutorials gemacht. Unklar ist (für mich), wie der Parameter 'filter' für Keras Conv2D bestimmt wird.

Die meisten Quellen, die ich gelesen habe, setzen den Parameter einfach ohne Erläuterung auf 32. Ist dies nur eine Faustregel oder spielen die Abmessungen der Eingabebilder eine Rolle? Die Bilder in CIFAR-10 sind beispielsweise 32x32

Speziell:

model = Sequential()
filters = 32
model.add(Conv2D(filters, (3, 3), padding='same', input_shape=x_train.shape[1:]))

model.add(Activation('relu'))
model.add(Conv2D(filters, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

Die nächste Ebene hat einen Filterparameter von Filter * 2 oder 64. Wie wird dieser Wert erneut berechnet?

Tx.

Joe

5
Joe

Eigentlich gibt es keine gute Antwort auf Ihre Frage. Die meisten Architekturen werden in der Regel während vieler Experimente sorgfältig entworfen und optimiert. Ich könnte Ihnen einige der Daumenregeln mitteilen, die beim Entwurf einer eigenen Architektur gelten sollten:

  1. Vermeiden Sie ein Dimensionszusammenbruch in der ersten Ebene. Nehmen wir an, Ihr Eingabefilter hat eine (n, n)-Raumform für RGB-Bild. In diesem Fall empfiehlt es sich, die Filternummern auf einen größeren Wert als n * n * 3 einzustellen, da dies die Dimensionalität der Eingabe eines einzelnen Filters ist. Wenn Sie eine kleinere Anzahl einstellen, kann dies dazu führen, dass viele nützliche Informationen über das Bild durch die Initialisierung verloren gehen, wodurch informative Bemaßungen verloren gehen. Natürlich - das ist keine allgemeine Regel - z. Bei einer Texturerkennung, bei der die Bildkomplexität geringer ist, kann eine kleine Anzahl von Filtern tatsächlich hilfreich sein.

  2. Denken Sie mehr an die Lautstärke als an die Anzahl der Filter - Bei der Einstellung der Anzahl der Filter ist es wichtig, über die Volumenänderung nachzudenken, anstatt über die Änderung der Filterzahlen zwischen den aufeinanderfolgenden Schichten. Z.B. in VGG - Obwohl sich die Anzahl der Filter nach dem Pooling-Layer verdoppelt, wird das tatsächliche Volumen der Feature-Map um den Faktor 2 verringert, da durch das Pooling die Feature-Map um den Faktor 4 verringert wird. Normalerweise sollte die Verringerung des Volumens um mehr als 3 als schlechte Praxis betrachtet werden. Die meisten modernen Architekturen verwenden den Volumenabfallfaktor im Bereich zwischen 1 und 2. Dennoch ist dies keine allgemeine Regel, z. Im Falle einer engen Hierarchie kann der größere Wert des Volumenabfalls tatsächlich helfen.

  3. Vermeiden Sie Engpässe. Wie Sie in diesem Meilenstein lesen können Papier Engpässe können Ihren Trainingsprozess ernsthaft schädigen. Dies tritt auf, wenn das Absenken der Lautstärke zu stark ist. Natürlich - dies kann immer noch erreicht werden), aber Sie sollten das intelligente Downsampling verwenden, das z in Inception v>2

  4. 1x1 Faltungen prüfen - es wird angenommen, dass die Filteraktivierung stark korreliert ist. Man kann dies ausnutzen, indem man 1x1 Windungen - nämlich eine Faltung mit einer Filtergröße von 1 verwendet. Dies ermöglicht z.B. Volumenabnahme durch sie statt pooling oder intelligentes Downsampling (siehe Beispiel hier ). Sie könnten beispielsweise zweimal mehr Filter erstellen und dann 25% davon reduzieren, indem Sie 1x1-Convs als aufeinanderfolgende Schicht verwenden.

Wie du sehen kannst. Es gibt keine einfache Möglichkeit, die Anzahl der Filter auszuwählen. Abgesehen von den oben genannten Hinweisen möchte ich Ihnen gerne eine meiner Lieblingsüberprüfungen der Anzahl der Filter mitteilen. Es dauert 2 einfache Schritte:

  1. Versuchen Sie bei 500 Zufallsbildern mit der Regularisierung eine Überanpassung vorzunehmen.
  2. Versuchen Sie, den gesamten Datensatz ohne Regularisierung zu überfüllen.

Normalerweise - wenn die Anzahl der Filter zu niedrig ist (im Allgemeinen) - zeigen diese beiden Tests dies. Wenn während Ihres Trainingsprozesses - mit der Regularisierung - Ihr Netzwerk stark überlastet wird, ist dies ein deutlicher Hinweis darauf, dass Ihr Netzwerk zu viele Filter enthält.

Prost.

13
Marcin Możejko

Die Anzahl der Filter wird aufgrund der Komplexität der Aufgabe ausgewählt. Komplexere Aufgaben erfordern mehr Filter. In der Regel wächst die Anzahl der Filter nach jeder Schicht (z. B. 128 -> 256 -> 512). Erste Ebenen (mit einer geringeren Anzahl von Filtern) fangen einige einfache Merkmale von Bildern (Kanten, Farbton usw.) auf, und die nächsten Ebenen versuchen, komplexere Merkmale basierend auf einfachen zu erhalten.

Es gibt Nice course von Stanford, um Ihnen die Intuition und das Verständnis von CNN zu vermitteln.

1
Aiven