chainer.functions.dilated_convolution_2d(x, W, b=None, stride=1, pad=0, dilate=1, cover_all=False)[source]

2次元の dilated 畳込み関数。.

 

これはConvNetsにおける2次元のdialated convolutionの実装です。この関数は3つの変数をとります。すなわち、入力画像 x, フィルター荷重 W, そしてバイアスベクトル b

 

表記法: これは次元の表記法です。

  • \(n\) はバッチサイズ
  • \(c_I\) と \(c_O\) はそれぞれ入力数と出力数 
  • \(h\) と \(w\) はそれぞれ入力画像の高さと幅 
  • \(k_H\) と \(k_W\) はそれぞれフィルターの高さと幅
Parameters:
  • x (Variable) – shapeが \((n, c_I, h, w)\)である入力値
  • W (Variable) –shapeが \((c_O, c_I, k_H, k_W)\)である荷重変数
  • b (Variable) – 長さ \(c_O\)のバイアス変数 (オプション).
  • stride (int or pair of ints) – フィルタ適用間隔。stride=s と stride=(s, s) は等しい。
  • pad (int or pair of ints) – 入力配列の空間的パディング幅。 pad=p と pad=(p, p) は等しい。
  • dilate (int or pair of ints) – フイルタ適用の拡張要素。 dilate=ddilate=(d, d)は等しい。
  • cover_all (bool) –  True,が設定されている場合、全ての空間的位置はいくつかの出力ピクセルに畳み込まれる。このことで出力サイズは増大する可能性がある
Returns:

出力値

Return type:

Variable

 

2次元 dilated畳み込み関数は以下のように定義されます。DilatedConvolution2D 関数は xにおけるサイズ \((k_H, k_W)\) のフィルターとパッチの相関関係を演算します。パッチは dilation 要素の間隔で抽出されます。ここで相関関係は拡張されたベクトルの内積に等しいことに留意してください。 パッチはdilation 要素の間隔で、各空間軸の最初の位置 -pad から stride の倍数ぶんシフトした位置で抽出されます。一番右(もしくは一番下) のパッチは、パディングされた空間サイズを超えては適用されません。

 

\((s_Y, s_X)\) をフィルタ適用のストライド、 \((p_H, p_W)\)を空間的パディングサイズ、そして \((d_Y, d_X)\) をフィルタ適用のdilation要素とします。 出力サイズ \((h_O, w_O)\)は、以下の式で決定されます。

\[\begin{split}h_O &= (h + 2p_H - k_H - (k_H - 1) * (d_Y - 1)) / s_Y + 1,\\ w_O &= (w + 2p_W - k_W - (k_W - 1) * (d_X - 1)) / s_X + 1.\end{split}\]

バイアスベクトルが与えられているとき、このバイアスベクトルは全ての畳込みの出力の空間的位置に加えられます。

 

 

(訳注:dialated convolutionでは畳み込みフィルタが間隔を開けて拡張されて適用されます。たとえば3x3のフィルタが間隔をあけることで6x6に対して適用されます。)

See also

DilatedConvolution2D