在卷積神經(jīng)網(wǎng)絡(luò)中,有使用設(shè)置padding的參數(shù),配合卷積步長(zhǎng),可以使得卷積后的特征圖尺寸大小不發(fā)生改變,那么在手動(dòng)實(shí)現(xiàn)圖片或特征圖的邊界零填充時(shí),常用的函數(shù)是nn.ZeroPad2d(),可以指定tensor的四個(gè)方向上的填充,比如左邊添加1dim、右邊添加2dim、上邊添加3dim、下邊添加4dim,即指定paddin參數(shù)為(1,2,3,4),本文中代碼設(shè)置的是(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)#轉(zhuǎn)換成正常的RGB通道
print("img_cv2 shape:",img.shape)
img_tensor=toTensor(img)#轉(zhuǎn)成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')
代碼中需要注意的是,必須要將圖片數(shù)據(jù)轉(zhuǎn)換成tensor數(shù)據(jù)類型的才可以使用nn.zeroPad2d()函數(shù)
為了凸顯效果圖:我們將設(shè)置大尺度的0填充
nn.ZeroPad2d(padding=(100,30,60,60))
知識(shí)點(diǎn)擴(kuò)展:pytorch零填充函數(shù)ZeroPad2d作用
pytorch中最常用的零填充函數(shù)是nn.ZeroPad2d,也就是對(duì)Tensor使用0進(jìn)行邊界填充,我們可以指定tensor的四個(gè)方向上的填充數(shù),比如左邊添加1dim、右邊添加2dim、上邊添加3dim、下邊添加4dim,即指定paddin參數(shù)為(1,2,3,4),如下:
pad = nn.ZeroPad2d(padding=(1, 2, 3, 4))
y = pad(x)
得到的y是x在四個(gè)方向上按照(1,2,3,4)進(jìn)行的補(bǔ)零操作,如下圖:
到此這篇關(guān)于pytorch中的nn.ZeroPad2d()零填充函數(shù)實(shí)例詳解的文章就介紹到這了,更多相關(guān)pytorch 零填充函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 基于python及pytorch中乘法的使用詳解
- PyTorch安裝與基本使用詳解
- pytorch中[..., 0]的用法說(shuō)明