PyTorch で conv2d + padding='same' 相当を行うメモ
pytorch で, numpy や tensorflow などでの padding='same'(名前がややこしいが, 畳み込んだ結果が入力画像と同じサイズになる)で畳み込み処理したい.
PyTorch 自体には, padding='same' 自体はないため, それ相当を自前で行うか, 上下左右の padding 幅が変わらないのであれば, 最近(少なくとも v1.6.0)では, Conv2d に padding 引数と, padding_mode を指定で対応できます. e.g.
conv = torch.nn.Conv2d(1, 1, kernel_size, padding=[kernel_size[1]//2, kernel_size[0] // 2], bias=False, padding_mode='replicate')
padding の幅は, kernel width size や stride などから自前で計算する必要があります.
discuss にあるように, 奇数の kernel 幅であれば kernel_width//2
で求まります.
padding_mode
は, デフォルトの "zeros"
だと, 端っこの結果が暗くなるので注意ください.
replicate
or reflection
あたりを指定がよいかと思います.
Author And Source
この問題について(PyTorch で conv2d + padding='same' 相当を行うメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/syoyo/items/ddff3268b4dfa3ebb3d6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .