Wie zu tun, zero-padding in keras conv Schicht?
Bin ich versucht zu implementieren-Modell aus der wissenschaftlichen Artikel, die sagt, Sie sind mit null Polsterung. Ist es möglich zu konfigurieren, dass dieser Polsterung in keras Conv2D?
Nur möglich, Werte für padding, ich sehe sind
Polsterung: eine "gültig" oder "gleiche" (case-insensitive).
Ist es möglich, pad mit Nullen oder andere Konstante Werte?
- Hier finden Sie ausführlichere Erläuterung der keras polsterschichten stackoverflow.com/a/39371113/11239773
Du musst angemeldet sein, um einen Kommentar abzugeben.
"gleiche" bedeutet, dass null Polsterung. Es ist derzeit nicht möglich, pad mit anderen Konstanten in einer effizienten Art und Weise.
Wenn Sie
padding='valid'
gibt es keine Polsterung.Wenn Sie
padding='same'
mitstrides=1
die Eingabe mit Nullen aufgefüllt, so dass Breite und Höhe der Ausgabe ist die gleiche wie die Eingabe. Wie in dem Dokument beschrieben, "gleiche" ist etwas inkonsistent über backends mitstrides
!= 1.Wenn Sie wollen manuell legen Sie die Polsterung Wert, vielleicht der einfachste Weg ist, um eine
ZeroPadding2D
Schicht vorConv2D
.Beispielsweise
ZeroPadding2D(padding=((1,2),(3,4)))
hinzufügen dimension 1 Links, 2 rechts, 3 oben und 4 unten.ZeroPadding2D(5)
wird 5 hinzufügen dimension auf allen 4 Grenzen.(btw, Es ist ein wrap-layer backend-Funktion
spatial_2d_padding
)Werfen Sie einen Blick auf
spatial_2d_padding
Funktion. Es pads ein tensor mit Nullen.padding='same'
option, wird automatisch pad mit Nullen zu halten die gleiche Form wie die Eingabe. Aber wenn Sie wollen etwas, das ist nicht von der convolutional layer selbst, oder in anderen Fällen, ist dies die richtige Funktion zu gehen.Ich denke, Polsterung='gleich' bedeutet, dass im Fall wir in eine versteckte Schicht die leeren Zellen, dass die Schrittlänge finden, gefüllt werden mit den Werten der vorherigen Schicht nicht mit Nullen, nur wenn die Eingabe-layer wird mit Nullen gefüllt.
https://keras.io/layers/convolutional/
ZeroPadding2D=>
keras.Schichten.ZeroPadding2D(padding=(1, 1), data_format=None)
Zero-padding layer für 2D-Eingabe (z.B. Bild).
Dieser Ebene können Zeilen und Spalten hinzufügen von Nullen am oberen, unteren, linken und rechten Seite des Bildes tensor.
Argumente
Polsterung: int, oder ein Tupel aus 2 int-Werte oder Tupel von 2-Tupeln, 2 ints.
Wenn int: die gleiche symmetrische Polsterung wird angewandt, um die Höhe und Breite.
Wenn ein Tupel aus 2 int-Werten: interpretiert als zwei verschiedene symmetrische Polsterung Werte für Höhe und Breite: (symmetric_height_pad, symmetric_width_pad).
Wenn Tupel von 2-Tupeln, 2 ints: interpretiert als ((top_pad, bottom_pad), (left_pad, right_pad))
data_format: Ein string, eine "channels_last" oder "channels_first". Die Reihenfolge der Dimensionen in den Eingängen. "channels_last" entspricht Eingänge mit Form (batch, Höhe, Breite, Kanäle), während "channels_first" entspricht Eingänge mit Form (batch -, TV, - Höhe, - Breite). Es wird standardmäßig der image_data_format Wert in Ihrem Keras config-Datei unter ~/.keras/keras.json. Wenn Sie noch nie eingestellt, dann wird "channels_last".