torch.nn.ConvTranspose2d()
阿新 • • 發佈:2021-01-07
轉載自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
歡迎留言討論~ ^ _ ^