日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

(pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride)

發布時間:2024/8/23 卷积神经网络 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

卷積神經網絡中的填充(padding)和步幅(stride)

之前寫過一篇blog,描述CNN網絡層的輸入和輸入尺寸的計算關系,但是并沒有描述的很全面,這里全面描述了影響輸出尺寸的兩個超參數padding和stride,查閱了相關資料,編碼理解了pytorch中CNN網絡的輸入輸出關系。

對于CNN網絡,一般來說,假設輸入形狀是nh×nwn_h\times n_wnh?×nw?,卷積核窗口形狀是kh×kwk_h\times k_wkh?×kw?,那么輸出形狀將會是

(nh?kh+1)×(nw?kw+1).(n_h-k_h+1) \times (n_w-k_w+1).(nh??kh?+1)×(nw??kw?+1).
所以卷積層的輸出形狀由輸入形狀和卷積核窗口形狀決定。卷積層還有兩個超參數,即填充和步幅。它們可以對給定形狀的輸入和卷積核改變輸出形狀。

填充(padding)

填充(padding)是指在輸入高和寬的兩側填充元素(通常是0元素)。

對于輸入:
input=[012345678]input = \begin{bmatrix} 0 & 1 & 2 \\ 3 & 4 &5 \\ 6 & 7 & 8 \end{bmatrix}input=???036?147?258????

我們在原輸入高和寬的兩側分別添加了值為0的元素,使得輸入高和寬從3變成了5,并導致輸出高和寬由2增加到4:

[012345678]→[0000000120034500678000000]\begin{bmatrix} 0 & 1 & 2 \\ 3 & 4 &5 \\ 6 & 7 & 8 \end{bmatrix} \rightarrow \begin{bmatrix} 0 & 0&0&0&0\\ 0&0&1&2&0 \\ 0&3&4&5&0\\0&6&7&8&0\\0&0&0&0&0\end{bmatrix} ???036?147?258???????????00000?00360?01470?02580?00000????????

一般來說,如果在高的兩側一共填充php_hph?行,在寬的兩側一共填充pwp_wpw?列,那么輸出形狀將會是

(nh?kh+ph+1)×(nw?kw+pw+1),(n_h-k_h+p_h+1)\times(n_w-k_w+p_w+1),(nh??kh?+ph?+1)×(nw??kw?+pw?+1),

也就是說,輸出的高和寬會分別增加php_hph?pwp_wpw?

[0000000120034500678000000]?[0123]=[03849192510213743166780]\begin{bmatrix} 0 & 0&0&0&0\\ 0&0&1&2&0 \\ 0&3&4&5&0\\0&6&7&8&0\\0&0&0&0&0\end{bmatrix} * \begin{bmatrix} 0&1\\2&3 \end{bmatrix} = \begin{bmatrix} 0&3&8&4\\9 &19& 25& 10\\21 &37& 43& 16\\6 &7 &8 &0 \end{bmatrix}???????00000?00360?01470?02580?00000?????????[02?13?]=?????09216?319377?825438?410160??????

在很多情況下,我們會設置
ph=kh?1pw=kw?1p_h=k_h-1 \\ p_w=k_w-1ph?=kh??1pw?=kw??1

使輸入和輸出具有相同的高和寬。這樣會方便在構造網絡時推測每個層的輸出形狀。假設這里khk_hkh?是奇數,我們會在高的兩側分別填充ph/2p_h/2ph?/2行。如果khk_hkh?是偶數,一種可能是在輸入的頂端一側填充?ph/2?\lceil p_h/2\rceil?ph?/2?行,而在底端一側填充?ph/2?\lfloor p_h/2\rfloor?ph?/2?行。在寬的兩側填充同理。

卷積神經網絡經常使用奇數高寬的卷積核,如1、3、5和7,所以兩端上的填充個數相等。對任意的二維數組X,設它的第i行第j列的元素為X[i,j]。當兩端上的填充個數相等,并使輸入和輸出具有相同的高和寬時,我們就知道輸出Y[i,j]是由輸入以X[i,j]為中心的窗口同卷積核進行互相關計算得到的。

下面的我們創建一個高和寬為3的二維卷積層,然后設輸入高和寬兩側的填充數分別為1。給定一個高和寬為8的輸入,我們發現輸出的高和寬也是8。

import torch from torch import nn# 定義一個函數來計算卷積層。它對輸入和輸出做相應的升維和降維 def comp_conv2d(conv2d, X):X = X.view((1, 1) + X.shape)# (1, 1)代表批量大小和通道數,均為1Y = 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

輸出:

torch.Size([8, 8])

當卷積核的高和寬不同時,可以通過設置高和寬上不同的填充數使輸出和輸入具有相同的高和寬。

# 使用高為5、寬為3的卷積核。在高和寬兩側的填充數分別為2和1 conv2d = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=(5, 3), padding=(2, 1)) comp_conv2d(conv2d, X).shape

輸出不變

步幅(stride)

卷積窗口從輸入數組的最左上方開始,按從左往右、從上往下的順序,依次在輸入數組上滑動。我們將每次滑動的行數和列數稱為步幅(stride)。

目前我們看到的例子里,在高和寬兩個方向上步幅均為1, 我們也可以使用更大的步幅。

在下面的問題中:
在高上步幅為3、在寬上步幅為2。可以看到,輸出第一列第二個元素時,卷積窗口向下滑動了3行,而在輸出第一行第二個元素時卷積窗口向右滑動了2列。當卷積窗口在輸入上再向右滑動2列時,由于輸入元素無法填滿窗口,無結果輸出。

[0000000120034500678000000]?[0123]=[[0123]?[0000][0123]?[0012][0123]?[0600][0123]?[7700]]=[0868]\begin{bmatrix} 0 & 0&0&0&0\\ 0&0&1&2&0 \\ 0&3&4&5&0\\0&6&7&8&0\\0&0&0&0&0\end{bmatrix} * \begin{bmatrix} 0&1\\2&3 \end{bmatrix} = \begin{bmatrix} {\begin{bmatrix} 0&1\\2&3 \end{bmatrix}* \begin{bmatrix} 0&0\\0&0 \end{bmatrix} \quad \begin{bmatrix} 0&1\\2&3 \end{bmatrix}* \begin{bmatrix} 0&0\\1&2 \end{bmatrix}}\\ \\ \\ {\begin{bmatrix} 0&1\\2&3 \end{bmatrix}* \begin{bmatrix} 0&6\\0&0 \end{bmatrix} \quad \begin{bmatrix} 0&1\\2&3 \end{bmatrix}* \begin{bmatrix} 7&7\\0&0 \end{bmatrix}} \end{bmatrix} = \begin{bmatrix} 0&8 \\ 6&8\end{bmatrix}???????00000?00360?01470?02580?00000?????????[02?13?]=?????????[02?13?]?[00?00?][02?13?]?[01?02?][02?13?]?[00?60?][02?13?]?[70?70?]??????????=[06?88?]

一般來說,當高上步幅為shs_hsh?,寬上步幅為sws_wsw?時,輸出形狀為

?(nh?kh+ph+sh)/sh?×?(nw?kw+pw+sw)/sw?.\lfloor(n_h-k_h+p_h+s_h)/s_h\rfloor \times \lfloor(n_w-k_w+p_w+s_w)/s_w\rfloor.?(nh??kh?+ph?+sh?)/sh??×?(nw??kw?+pw?+sw?)/sw??.

如果設置
ph=kh?1pw=kw?1p_h=k_h-1\\p_w=k_w-1ph?=kh??1pw?=kw??1
那么輸出形狀將簡化為
?(nh+sh?1)/sh?×?(nw+sw?1)/sw?\lfloor(n_h+s_h-1)/s_h\rfloor \times \lfloor(n_w+s_w-1)/s_w\rfloor?(nh?+sh??1)/sh??×?(nw?+sw??1)/sw??
更進一步,如果輸入的高和寬能分別被高和寬上的步幅整除,那么輸出形狀將是
(nh/sh)×(nw/sw)(因為上式中是向下取整)(n_h/s_h) \times (n_w/s_w) (因為上式中是向下取整)(nh?/sh?)×(nw?/sw?)()
·
·
我們令高和寬上的步幅均為2,從而使輸出的高和寬減半。

conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, stride=2) comp_conv2d(conv2d, X).shape

輸出:

torch.Size([4, 4])

代入公式,這里應該這么算:
?(nh?kh+ph+sh)/sh?×?(nw?kw+pw+sw)/sw?=?(8?3+1×2+2)/2?×?(8?3+1×2+2)/2?=4×4\lfloor(n_h-k_h+p_h+s_h)/s_h\rfloor \times \lfloor(n_w-k_w+p_w+s_w)/s_w\rfloor = \\\lfloor(8-3+1\times2+2)/2\rfloor \times \lfloor(8-3+1\times2+2)/2\rfloor = 4 \times 4?(nh??kh?+ph?+sh?)/sh??×?(nw??kw?+pw?+sw?)/sw??=?(8?3+1×2+2)/2?×?(8?3+1×2+2)/2?=4×4

再算一個稍微復雜點的:

conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=(0, 1), stride=(3, 4)) comp_conv2d(conv2d, X).shape

輸出:

torch.Size([2, 2])

代入公式,這里應該這么算:
?(nh?kh+ph+sh)/sh?×?(nw?kw+pw+sw)/sw?=?(8?3+0×2+3)/3?×?(8?5+1×2+4)/4?=2×2\lfloor(n_h-k_h+p_h+s_h)/s_h\rfloor \times \lfloor(n_w-k_w+p_w+s_w)/s_w\rfloor = \\\lfloor(8-3+0\times2+3)/3\rfloor \times \lfloor(8-5+1\times2+4)/4\rfloor = 2 \times 2?(nh??kh?+ph?+sh?)/sh??×?(nw??kw?+pw?+sw?)/sw??=?(8?3+0×2+3)/3?×?(8?5+1×2+4)/4?=2×2

總結

以上是生活随笔為你收集整理的(pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色复仇草 | 欧美熟妇精品一区二区 | 亚洲av不卡一区二区 | 亚洲 欧美 中文字幕 | 麻豆精品91| 久久久久久草 | 欧美激情久久久久久久 | 色咪咪网站 | 亚洲av成人无码一二三在线观看 | 亚洲hh| 久久久无码人妻精品一区 | 探花视频在线免费观看 | 日韩综合av | 欧美日韩一区二区视频在线观看 | 性感美女高潮 | 在线观看av网 | 97se在线视频| 在线观看色视频 | 草草地址线路①屁屁影院成人 | 永久免费在线观看视频 | 羞羞草影院 | 精品人妻一区二区三区含羞草 | 尤物综合网 | 99久久精品无码一区二区毛片 | 精品久久亚洲 | 91青青草视频 | 亚洲成人a∨ | 欧美午夜精品久久久久久浪潮 | 国内精品嫩模av私拍在线观看 | 国产精品伦一区二区三级视频 | 伊人超碰 | 亚洲精品免费视频 | 哪里可以免费看毛片 | 中文字幕在线观看你懂的 | 99re在线观看视频 | 久久影片 | 欧美毛片网站 | 中文字幕Av日韩精品 | 黄色三级在线视频 | 日日夜夜艹 | 亚洲日本视频 | 91青青操 | 久久影院午夜理论片无码 | 色噜噜狠狠狠综合曰曰曰88av | 一区二区三区欧美精品 | 91爱爱com| 爱爱视频免费网站 | 国产精品一区二区在线播放 | 国产一级免费在线观看 | 亚洲一区 在线播放 | 亚洲精品推荐 | 国产二区视频在线观看 | av777777| 小柔的淫辱日记(h | 久久久综合久久久 | 丹丹的呻吟声1一7 | 国产成人av网站 | 粉嫩小泬无遮挡久久久久久 | 视频一区在线播放 | 影音先锋成人 | 二区在线播放 | 激情丁香网 | 国产淫视 | 欧美黄色短视频 | 华人永久免费 | 水蜜桃久久 | aaa在线视频 | 熟妇人妻久久中文字幕 | 粉嫩小泬无遮挡久久久久久 | 亚洲性综合网 | 亚洲欧美在线一区二区 | 国产女人与zoxxxx另类 | 黄色网在线免费观看 | 女人张开腿让男人桶爽 | 香蕉久久国产av一区二区 | 天堂va蜜桃 | 亚洲成人手机在线 | 99re久久| 性一交一乱一精一晶 | 中文在线视频 | 日本丰满少妇 | 国产伦精品一区二区三区视频我 | 污网址在线观看 | 亚洲国产黄色 | 91人人爽| 羞视频在线观看 | mm131亚洲精品 | 99视频在线免费观看 | 一区二区三区手机在线观看 | 国产精品国产三级国产aⅴ中文 | 亚洲精品视频观看 | 久热综合 | 日韩字幕在线 | 国产免费无遮挡吸奶头视频 | 久久网中文字幕 | 国产东北露脸精品视频 | 日韩欧美中文字幕在线播放 | 91精品国产高清一区二区三密臀 | 夜夜狠狠擅视频 |