pytouchのnn.Zero Pad 2 d()0充填関数の例を詳しく説明します。


畳み込み神経ネットワークにおいて、paddingを設定するパラメータを使用して、畳み込みステップを配合して、畳み込み後の特徴図のサイズを変更しないようにすることができます。すると、手動で画像や特徴図の境界0充填を実現する場合、よく使われる関数はnn.Zero Pad 2 d()です。テナントの4方向の充填を指定できます。例えば、左に1 dimを追加し、右に2 dimを追加し、上にdimを追加します。以下に4 dimを追加します。すなわち指定されたpaddinパラメータは(1,2,3,4)です。ここでコード設定されているのは(3,4,5,6)以下の通りです。

import torch.nn as nn
import cv2
import torchvision
from torchvision.utils import save_image
def same_padding(img):
    toTensor=torchvision.transforms.ToTensor()
    img=cv2.imread(img)#    (H,W,C)
    img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#      RGB  
    print("img_cv2 shape:",img.shape)
    img_tensor=toTensor(img)#  tensor  (C,H,W)
    print("img_tensor shape:",img_tensor.shape)
    pad=nn.ZeroPad2d(padding=(3,4,5,6))

    img_padding=pad(img_tensor)
    print("img_padding shape:",img_padding.shape)
    save_image(img_padding,'img_padding.jpg')# tensor     ,       
same_padding('bird.jpg')
コードの中で注意が必要なのは、ピクチャデータをtenssorデータタイプに変換しなければならない場合、nn.zroPad 2 d()関数を使用することができません。
効果図を強調するために、大規模な0充填を設定します。

nn.ZeroPad2d(padding=(100,30,60,60))
在这里插入图片描述
知識点拡張:pytouch 0充填関数ZeroPad 2 d作用
pytouchで最もよく使われているゼロ充填関数はnn.ZeroPad 2 dで、つまりTensorに0を使って境界充填します。テナントの4方向の充填数を指定できます。左に1 dimを追加し、右に2 dimを追加し、上に3 dimを追加し、下に4 dimを追加します。即ち指定paddinパラメータは(1,2,3,4)です。
pad=nn.Zero Pad 2 d(padding=(1,2,3,4)
y=pad(x)
得られたyはxであり、4方向(1,2,3,4)に従って行われるゼロ補足動作は、以下の図である。
在这里插入图片描述
ここで、pytouchのnn.ZeroPad 2 d()ゼロパディング関数の実例について詳しく解説した文章を紹介します。これに関連して、pytouch 0パディング関数の内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。