2016-05-08 3 views
9

Bellow ist ein Beispielcode aus der Dokumentation in Keras. Es sieht so aus, als ob die erste Faltung ein 256x256 Bild mit 3 Farbkanälen akzeptiert. Es hat 64 Ausgabefilter (ich denke, das sind die gleichen wie Feature-Maps, die ich an anderer Stelle gelesen habe, kann jemand das für mich bestätigen). Was mich verwirrt ist, dass die Ausgabegröße (None, 64, 256, 256) ist. Ich würde erwarten, dass es (None, 64 * 3, 256, 256) ist, da es für jeden der Farbkanäle Faltungen machen müsste. Ich frage mich, wie Keras die Farbkanäle bedient. Werden die Werte vor der Faltung gemittelt (in Graustufen umgewandelt)?Was machen Keras-Faltungsschichten mit Farbkanälen?

# apply a 3x3 convolution with 64 output filters on a 256x256 image: 
model = Sequential() 
model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 256, 256))) 
# now model.output_shape == (None, 64, 256, 256) 

# add a 3x3 convolution on top, with 32 output filters: 
model.add(Convolution2D(32, 3, 3, border_mode='same')) 
# now model.output_shape == (None, 32, 256, 256) 

Antwort

5

ein Filter der Größe 3 * 3 3 mit Eingangskanälen besteht aus 3 * 3 * 3-Parametern, so dass die Gewichte der Faltungskerne für jeden Kanal unterschiedlich sind.

es fasst die Faltungsergebnisse jedes Kanals zusammen (wahrscheinlich zusammen mit einem Bias-Ausdruck), um die Ausgabe zu erhalten. Daher ist die Ausgabeform unabhängig von der Anzahl der Eingangskanäle, z. B. (Keine, 64, 256, 256) und nicht (Keine, 64 * 3, 256, 256).

Ich bin nicht 100% sicher, aber ich denke, eine Feature-Map bezieht sich auf die Ausgabe eines solchen Filters auf den Eingang (zum Beispiel eine 256 * 256-Matrix).