web-dev-qa-db-ja.com

Keras Conv Layerでゼロパディングを行う方法は?

科学記事からモデルを実装しようとしていますが、それは彼らがゼロパディングを使用していると言っています。 keras Conv2D でこのパディングを構成することは可能ですか?

私が見るパディングの唯一の可能な値は

パディング:「有効」または「同じ」のいずれか(大文字と小文字を区別しない)。

ゼロまたは他の定数値でパディングすることは可能ですか?

9
Dims

「同じ」はゼロパディングを意味します。現在、他の定数を効率的な方法で埋め込むことはできません。

10
Jonas Adler

_padding='valid'_を使用する場合、パディングはありません。

_padding='same'_を_strides=1_とともに使用すると、入力のゼロとパディングが行われ、出力の幅と高さが入力と同じになります。このドキュメントで説明されているように、「同じ」はstrides!= 1のバックエンド間でわずかに矛盾しています。

パディング値を手動で設定したい場合、おそらく最も簡単な方法は _ZeroPadding2D_ レイヤーを追加することです_Conv2D_。

たとえば、ZeroPadding2D(padding=((1,2),(3,4)))は、左側に1次元、右側に2次元、上部に3次元、下部に4次元を追加します。 ZeroPadding2D(5)は、4つの境界すべてに5次元を追加します。

(ところで、それはバックエンド関数のラップ層です_spatial_2d_padding_)

6
Neal

を見てみましょう - spatial_2d_padding 関数。テンソルにゼロを埋め込みます。

2

Padding = 'same'は、入力レイヤーがゼロで埋められる場合にのみ、非表示レイヤーでストライドが空のセルをゼロではなく前のレイヤーの値で埋めることを意味すると思います。

0
Omar Villa

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

ZeroPadding2D =>

keras.layers.ZeroPadding2D(padding =(1、1)、data_format = None)2D入力用のゼロパディングレイヤー(例:画像)。

このレイヤーは、イメージテンソルの上下左右にゼロの行と列を追加できます。

引数

パディング:int、または2 intのタプル、または2 intの2タプルのTuple。 intの場合:同じ対称パディングが高さと幅に適用されます。 Tuple of 2 int:高さと幅の2つの異なる対称パディング値として解釈される場合:(symmetric_height_pad、symmetric_width_pad)。 2つのintの2つのtupleのTuple:((top_pad、bottom_pad)、(left_pad、right_pad))と解釈される場合

data_format:「channels_last」または「channels_first」のいずれかの文字列。入力の次元の順序。 「channels_last」は形状(バッチ、高さ、幅、チャンネル)の入力に対応し、「channels_first」は形状(バッチ、チャンネル、高さ、幅)の入力に対応します。デフォルトでは、〜/ .keras/keras.jsonのKeras構成ファイルにあるimage_data_format値が使用されます。設定しない場合、「channels_last」になります。

0
Anurag Gupta