1. 程式人生 > 其它 >torch.nn.ConvTranspose2d()

torch.nn.ConvTranspose2d()

技術標籤:python神經網路pytorch

轉載自https://blog.csdn.net/qq_39777550/article/details/108965144?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

卷積:

class torch.nn.
Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True)
  • 1

藍色為輸入,藍色上的陰影為卷積核(kernel),綠色為輸出,藍色邊緣的白色框為padding
在這裡插入圖片描述
反捲積:

class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, bias=True)

    
    
  • 1

卷積和反捲積函式中的in_channels與out_channels以及kernel_size的含義相同。

需要注意的是padding和stride和conv2d不同,padding不是藍色的留白,是kernel像影象中心移動的單位。如下當padding=0時,卷積核剛好和輸入邊緣相交一個單位。因此pandding可以理解為卷積核向中心移動的步數。 同時stride也不再是kernel移動的步數,變為輸入單元彼此散開的步數。
即:
padding=0時,卷積核的起始位置和輸入層相交一個畫素,當padding=1時,卷積核的起始位置和輸入層相交2個畫素,依此類推;
stride=1時,輸入層元素之間沒有間隔,當stride=2時,輸入層元素之間間隔為1,stride=3時,輸入層元素之間間隔為2,以此類推。

示意圖如下圖所示:

padding=0,kernel_size=3,stride=1
output_padding是對反捲積後的特徵圖進行邊緣填補0.
output_padding=0表示不進行填補,output_padding=1表示進行填補一圈0,等於2表示進行填補2圈0.
在這裡插入圖片描述

padding=2,kernel_size=4,stride=1
在這裡插入圖片描述
padding=2,kernel_size=3,stride=1
在這裡插入圖片描述
padding=0,kernel_size=3,stride=2
在這裡插入圖片描述
padding=1,kernel_size=3,stride=2
在這裡插入圖片描述
歡迎留言討論~ ^ _ ^