2017-09-29 3 views
1

In einem typischen CNN wird eine Conv-Schicht Y-Filter der Größe NxM haben, und somit hat sie trainierbare N x M x Y-Parameter (ohne Bias).Warum sind meine Keras Conv2D-Kerne 3-dimensional?

Dementsprechend ich im folgenden einfachen Keras-Modell erwarte ich die zweite Conv-Schicht 16 Kernel der Größe (7x7) und damit Kernel-Gewichte der Größe (7x7x16). Warum sind dann seine Gewichte tatsächlich Größe (7x7x8x16)?

Ich verstehe die Mechanik von dem, was passiert: Die Conv2D-Schichten machen tatsächlich eine 3D-Faltung und behandeln die Ausgangskarten der vorherigen Schicht als Kanäle. Es hat 16 3D-Kernel der Größe (7x7x8). Was ich nicht verstehe, ist:

  • Warum ist dies Keras Standardverhalten?
  • Wie bekomme ich eine "traditionelle" Faltungsschicht, ohne in die Low-Level-API zu fallen (was ist der Grund, Keras überhaupt zu verwenden)?

_

from keras.models import Sequential 
from keras.layers import InputLayer, Conv2D 

model = Sequential([ 
    InputLayer((101, 101, 1)), 
    Conv2D(8, (11, 11)), 
    Conv2D(16, (7, 7)) 
]) 
model.weights 

Antwort

1

Im typischen Jargon, wenn jemand auf eine Conv-Schicht mit N-Kernen der Größe (x, y) verweist, wird angenommen, dass die Kerne tatsächlich die Größe (x, y, z) haben, wobei z die Tiefe von das Eingabevolumen für diese Ebene.

Stellen Sie sich vor, was passiert, wenn das Eingangsbild des Netzwerks R-, G- und B-Kanäle hat: Jeder der anfänglichen Kernels selbst hat 3 Kanäle. Nachfolgende Schichten sind gleich und behandeln das Eingangsvolumen als ein Mehrkanalbild, wobei die Kanäle nun Karten eines anderen Merkmals sind.

Die Bewegung dieses 3D-Kernels, wie er über die Eingabe "streicht", ist nur 2D, daher wird es immer noch als 2D-Faltung bezeichnet, und die Ausgabe dieser Faltung ist eine 2D-Feature-Map.

2

Q1: und somit kernel Gewichte Größe (7x7x16). Warum sind dann seine Gewichte tatsächlich Größe (7x7x8x16)?

Nein, die Kernel-Gewichte sind nicht die Größe (7x7x16).

von cs231n:

Beispiel 2 eine Eingangsvolumengröße hatte Angenommen [16x16x20]. Dann würde unter Verwendung einer beispielhaften rezeptiven Feldgröße von 3 × 3, jedes Neuron in der Conv-Schicht nun insgesamt 3 × 3 × 20 = 180 Verbindungen zu dem Eingangsvolumen haben. Beachten Sie, dass die Konnektivität wiederum lokal im Raum ist (z. B. 3x3), aber entlang der Eingabetiefe (20) voll ist.

Seien Sie vorsichtig die "alle".

In Ihrem Modell 7x7 ist Ihre einzige Filtergröße, und es wird zur vorherige konv Schicht verbinden, so dass die Parameter auf einem einzigen Filter ist 7x7x8, und Sie haben 16, so dass die Gesamt Parameter sind 7x7x8x16

Q2: Warum ist das Keras Standardverhalten?

Siehe Q1.

Verwandte Themen