Ich bin auf this tutorial auf Keras, um eine grundlegende Conv-Net zu trainieren. Ich finde ein paar Dinge verwirrend, und die Keras-Dokumentation geht auch nicht sehr detailliert.Keras Modellstruktur Fragen
Blick Lassen Sie uns bei den ersten paar Schichten des Netzwerks:
model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28)))
model.add(Convolution2D(32, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
Meine Fragen:
- Das Tutorial beschreibt die erste Schicht als „Eingangsschicht“. Die erste Zeile enthält jedoch eine
Convolution2D
-Funktion mit eineminput_shape
. Habe ich richtig angenommen, dass dies tatsächlich die erste versteckte Schicht (eine Faltungsschicht) ist, anstatt nur die Eingabe Schicht? Grund ist, dass wir keine separatemodel.add()
Anweisung nur für die Eingabe benötigen? In der FunktionConvolution2D()
verwenden wir 32 Filter, wobei jeder Filter 3x3 Pixel groß ist Nach meinem Verständnis ist ein Filter ein kleiner Pixelblock, der über das Bild "scannt". Benötigen wir also für ein 28x28-Bild nicht 676 Filter (26 * 26, da jeder Filter 3x3 ist)? Was bedeutet die32
hier? - Die letzte Zeile ist eine Dropout-Ebene. Aus meiner Sicht ist Dropout eine Regularisierungstechnik und wird auf das gesamte Netzwerk angewendet. Also gilt die
Dropout(0.25)
hier ein 25% Dropout nur auf die vorherige Ebene? Oder gilt es für alle davor liegenden Schichten?
Danke.
Im not gonna Post eine Antwort, wie es so unvollständig wäre: 1. ja, die „Eingangsschicht“ ist in der Tat nur eine passive Schicht, die nur die Eingangsdaten in der ersten verborgenen Schicht 3 passieren. Es gilt nur für die vorherige Ebene (in der Tat die aktuelle Ebene, bis Sie eine weitere im sequenziellen Modell hinzufügen), aber nicht alle Ebenen können ein Dropout aufweisen. Convolutional Layer haben keine anderen Regularisierungstechniken. Dichte Dropout, Wiederkehrende auch, aber mit einer anderen Syntax (Schlüsselwörter Argumente). – Gaarv