Mein cnn-Modell, das mit Keras 1.1.1 erstellt wird, hat zwei Faltungspooling-Schichten, gefolgt von zwei dichten Schichten, und Dropout wird nach der zweiten Faltungspooling-Schicht und der ersten dichten Schicht hinzugefügt. Die Codes sind wie folgt:Keras CNN-Modellparameterberechnung
model = Sequential()
#convolution-pooling layers
model.add(Convolution2D(32, 5, 5, input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, 5, 5))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
#dense layers
model.add(Flatten())
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add((Dense(2)))
model.add(Activation('softmax'))
#optimizer
sgd = SGD(lr=1e-3, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer = sgd,
metrics=['accuracy'])
print model.summary()
Das Modell Zusammenfassung der Tabelle gibt wie folgt:
Ich bin nicht klar, wie sich die Anzahl der Parameter der zweiten Faltungsschicht (dh 51264 angezeigt durch das rote Rechteck) wird berechnet. Ich dachte, die Nummer wäre (5 * 5 + 1) * 64 = 1664, da der Convolution-Kernel 5 * 5 groß ist und 64 Feature-Maps extrahiert werden müssen.
Außerdem habe ich bereits Dropout implementiert. Warum spiegelt die Parametertabelle diesen Punkt nicht wider? Es scheint, dass die Parameternummer ohne Dropout angegeben ist, obwohl das Dropout (Layer) in der Tabelle aufgeführt ist. Kann mir jemand helfen, die Parameterübersicht zu interpretieren?
In Bezug auf Dropout: Dies deaktiviert zufällig Neuronen während des Trainings. Sie sind immer noch in Ihrem Modell vorhanden und werden daher nicht von der Anzahl der Params in Ihrer Modellzusammenfassung abgezogen. – petezurich
Ich denke, du hast Recht – jingweimo