pytorch 中pad函式toch.nn.functional.pad()的用法
阿新 • • 發佈:2020-01-09
padding操作是給影象外圍加畫素點。
為了實際說明操作過程,這裡我們使用一張實際的圖片來做一下處理。
這張圖片是大小是(256,256),使用pad來給它加上一個黑色的邊框。具體程式碼如下:
import torch.nn,functional as F import torch from PIL import Image im=Image.open("heibai.jpg",'r') X=torch.Tensor(np.asarray(im)) print("shape:",X.shape) dim=(10,10,10) X=F.pad(X,dim,"constant",value=0) padX=X.data.numpy() padim=Image.fromarray(padX) padim=padim.convert("RGB")#這裡必須轉為RGB不然會 padim.save("padded.jpg","jpeg") padim.show() print("shape:",padX.shape)
輸出:
shape: torch.Size([256,256]) shape: (276,276)
可以看出給原圖四個方向給加上10維度的0,維度變為256+10+10得到的影象如下:
我們在舉幾個簡單例子:
x=np.asarray([[[1,2],[1,2]]]) X=torch.Tensor(x) print(X.shape) pad_dims = ( 2,2,1,) X=F.pad(X,pad_dims,"constant") print(X.shape) print(X)
輸出:
torch.Size([1,2]) torch.Size([3,6,6]) tensor([[[ 0.,0.,0.],[ 0.,0.]],[[ 0.,1.,2.,0.]]])
可以知若pid_sim為(2,1)則原維度變化是2+2+2=6,1+1+1=3.也就是第一個(2,2) pad的是最後一個維度,第二個(2,2)pad是倒數第二個維度,第三個(1,1)pad是第一個維度。
再舉一個四維度的,但是隻pad三個維度:
x=np.asarray([[[[1,2]]]]) X=torch.Tensor(x)#(1,2) print(X.shape) pad_dims = ( 2,"constant")#(1,12,12) print(X.shape) print(X)
輸出:
torch.Size([1,2]) torch.Size([1,3,6]) tensor([[[[ 0.,0.]]]])
再舉一個四維度的,pad四個維度:
x=np.asarray([[[[1,2 ) X=F.pad(X,2]) torch.Size([5,0.]]],.........太多了
以上這篇pytorch 中pad函式toch.nn.functional.pad()的用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。