LoginSignup
48
39

More than 5 years have passed since last update.

KerasのConv2DTransposeの動作について

Last updated at Posted at 2018-12-30

概要

Conv2DTranspose(ChainerではDeconvolution)の動作が分かりにくいので、どうやって動作しているのかをまとめる記事。

Transpose Convolutionとは

Upsamplingするときに使用されるレイヤー。
和訳すると「転置畳み込み」。なぜ転置なのかは以下のサイトで分かりやすく説明されている。
Up-sampling with Transposed Convolution

また以下のリンク先で動作のアニメーションが見れる。
Convolution arithmetic

出力shape計算式

Convolution2Dの出力shape計算式はTensorFlowの公式ドキュメントに式が書いてある。

TransposeConvolution2Dの出力shape計算式については、how to calculate the output shape of conv2d_transpose?に書かれている。

以下上記サイトに記載されている数式

Convolution2Dの出力shape計算式

  • Padding == SAMEの場合
output\_shape[i] = ceil(input\_shape[i] \div strides[i])
  • Padding == VALIDの場合
output\_shape[i] = ceil((input\_shape[i] - (filter\_shape[i]-1) \times dilation\_rate[i]) \div strides[i]).

TransposeConv2Dの出力shape計算式

  • Padding == SAMEの場合
output\_shape[i] = input\_shape[i] \times strides[i]
  • Padding == VALIDの場合
output\_shape[i] = (input\_shape[i] - 1)  \times strides[i] + filter\_shape[i]

Conv2DTranspose設定パラメータ

Params Value
filter_shape 畳み込みをするfilterのshape
strides 畳み込みの縦と横のストライド
padding VALID or SAME

Conv2Dのstridesはfilterをどれくらいずらすか、というパラメータだったが、Conv2DTransposeでは入力画像の画素間の間隔を表している。デフォルトはstrides=(1,1)になっていて、これは画素間に空白がないことを示している。
strides=(2,2)を設定すると入力画像の画素間に1つのパディングが埋め込まれる。

paddingは上記した出力shapeの計算式を切り替える役割を持っている。

Conv2DTransposeの動作図

設定パラメータと、実際にフィルターと入力画像がどうやって重なっているのか図示する。
赤の点線がフィルターを、青の正方形が入力画像を表している。


Params Value
input_shape (2,2)
filter_shape (2,2)
strides (1,1)
padding VALID
output_shape (3,3)

image.png


Params Value
input_shape (2,2)
filter_shape (2,2)
strides (1,1)
padding SAME
output_shape (2,2)

image.png


Params Value
input_shape (2,2)
filter_shape (2,2)
strides (2,2)
padding SAME
output_shape (4,4)

image.png


Params Value
input_shape (2,2)
filter_shape (4,4)
strides (2,2)
padding SAME
output_shape (4,4)

image.png


Params Value
input_shape (2,2)
filter_shape (4,4)
strides (2,2)
padding VALID
output_shape (6,6)

image.png

48
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
39