1. 程式人生 > 程式設計 >pytorch 中pad函式toch.nn.functional.pad()的用法

pytorch 中pad函式toch.nn.functional.pad()的用法

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()的用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。