wake-up-neo.com

Wie mache ich null in der Keras-Conv-Schicht?

Ich versuche, ein Modell aus einem wissenschaftlichen Artikel zu implementieren, das besagt, dass sie die Nullpunktauffüllung verwenden. Ist es möglich, diese Auffüllung in keras Conv2D zu konfigurieren?

Nur mögliche Werte für das Auffüllen sehe ich

auffüllung: "gültig" oder "gleich" (Groß- und Kleinschreibung wird nicht berücksichtigt).

Kann man mit Nullen oder anderen konstanten Werten auffüllen?

7
Dims

"gleich" bedeutet Nullabstand. Derzeit ist es nicht möglich, andere Konstanten effizient aufzufüllen.

9
Jonas Adler

Wenn Sie padding='valid' verwenden, erfolgt keine Auffüllung.

Wenn Sie padding='same' mit strides=1 verwenden, werden die Eingaben mit Nullen aufgefüllt, sodass Breite und Höhe der Ausgabe der Eingabe entsprechen. Wie in diesem Dokument beschrieben, ist "same" in Backends mit strides! = 1 etwas inkonsistent.

Wenn Sie manuell den Auffüllwert einstellen möchten, ist es am einfachsten, vor ZeroPadding2D einen Conv2D -Layer hinzuzufügen.

Beispielsweise fügt ZeroPadding2D(padding=((1,2),(3,4))) links 1, rechts 2, 3 oben und 4 unten hinzu. ZeroPadding2D(5) fügt an allen 4 Rändern 5 Dimensionen hinzu.

(Übrigens, es ist eine Wrap-Ebene der Backend-Funktion spatial_2d_padding)

2
Neal

Schauen Sie sich die spatial_2d_padding - Funktion an. Es füllt einen Tensor mit Nullen auf. 

2

Ich denke, padding = 'same' bedeutet, dass, wenn wir uns in einer verborgenen Ebene befinden, die leeren Zellen, die der Schritt findet, mit den Werten der vorherigen Ebene und nicht mit Nullen gefüllt werden, nur wenn die Eingabeebene mit Nullen gefüllt wird.

0
Omar Villa

https://keras.io/layers/convolutional/

ZeroPadding2D =>

keras.layers.ZeroPadding2D (padding = (1, 1), data_format = None) Ebene ohne Auffüllen für 2D-Eingabe (z. B. Bild).

Diese Ebene kann Zeilen und Spalten mit Nullen am oberen, unteren, linken und rechten Rand eines Bildtensors hinzufügen.

Argumente

padding: int oder Tupel von 2 Zoll oder Tupel von 2 Tupeln von 2 Zoll. If int: Die gleiche symmetrische Polsterung wird auf Höhe und Breite angewendet. Wenn Tupel von 2 in: als zwei unterschiedliche symmetrische Auffüllwerte für Höhe und Breite interpretiert werden: (symmetric_height_pad, symmetric_width_pad). Wenn Tupel von 2 Tupeln von 2 Zoll: interpretiert als ((top_pad, bottom_pad), (left_pad, right_pad))

datenformat: Eine Zeichenfolge, entweder "channels_last" oder "channels_first". Die Reihenfolge der Maße in den Eingaben. "channels_last" entspricht Eingaben mit Form (Stapel, Höhe, Breite, Kanäle), während "channels_first" Eingaben mit Form (Stapel, Kanäle, Höhe, Breite) entspricht. Standardmäßig wird der Wert image_data_format verwendet, den Sie in Ihrer Keras-Konfigurationsdatei unter ~/.keras/keras.json finden. Wenn Sie es nie einstellen, ist es "channels_last".

0
Anurag Gupta