[pytorch、学习] - 5.2 填充和步幅
生活随笔
收集整理的這篇文章主要介紹了
[pytorch、学习] - 5.2 填充和步幅
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考
5.2 填充和步幅
5.2.1 填充
填充(padding)是指在輸入高和寬的兩側填充元素(通常是0元素)。圖5.2里我們在原輸入高和寬的兩側分別添加了值為0的元素,使得輸入高和寬從3變成了5,并導致輸出高和寬由2增加到4。圖5.2中的陰影部分為第一個輸出元素及其計算所使用的輸入和核數組元素: 0 * 0 + 0 * 1 + 0 * 2 + 0 * 3 = 0.
下面的例子里,我們創建一個高和寬為3的二維卷積層,然后設輸入高和寬的填充數分別為1。給定一個高和寬為8的輸入,我們發現輸出的高和寬也是8.
import torch import torch.nn as nn# 定義一個函數來計算卷積層。它對輸入和輸出做出相應的升維和降維 def comp_conv2d(conv2d, X):# (1, 1)代表批量大小和通道數X = X.view((1, 1) + X.shape) # (8, 8) -> (1, 1, 8, 8) Y = conv2d(X)return Y.view(Y.shape[2:]) # 注意這里是兩側分別填充1行或列,所以在兩側一共填充2行或列 conv2d = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3, padding = 1)X = torch.rand(8, 8) comp_conv2d(conv2d, X).shape當卷積核的寬和高不同時,我們也可以通過設置寬和高上不同的填充數使輸出和輸入具有相同的高和寬。
# 使用高為5、寬為3的卷積核。在高和寬兩側的填充數分別為2和1 conv2d = nn.Conv2d(in_channels= 1, out_channels= 1, kernel_size=(5,3), padding=(2,1)) comp_conv2d(conv2d, X).shape5.2.2 步幅
# 下面我們讓步幅為2,使輸入的寬高減半 conv2d = nn.Conv2d(1,1, kernel_size= 3, padding=1, stride =2) comp_conv2d(conv2d, X).shape總結
以上是生活随笔為你收集整理的[pytorch、学习] - 5.2 填充和步幅的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【优化求解】基于NSGA2算法求解多目标
- 下一篇: linux隐藏apache信息,Linu