Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)圖像卷積運(yùn)算詳解
由于卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)是用于探索圖像數(shù)據(jù),本節(jié)我們將以圖像為例。
互相關(guān)運(yùn)算
嚴(yán)格來說,卷積層是個(gè)錯(cuò)誤的叫法,因?yàn)樗磉_(dá)的運(yùn)算其實(shí)是互相關(guān)運(yùn)算(cross-correlation),而不是卷積運(yùn)算。在卷積層中,輸入張量和核張量通過互相關(guān)運(yùn)算產(chǎn)生輸出張量。
首先,我們暫時(shí)忽略通道(第三維)這一情況,看看如何處理二維圖像數(shù)據(jù)和隱藏表示。下圖中,輸入是高度為3、寬度為3的二維張量(即形狀為 3 × 3 3\times3 3×3)。卷積核的高度和寬度都是2。
注意,輸出大小略小于輸入大小。這是因?yàn)槲覀冃枰銐虻目臻g在圖像上“移動(dòng)”卷積核。稍后,我們將看到如何通過在圖像邊界周圍填充零來保證有足夠的空間移動(dòng)內(nèi)核,從而保持輸出大小不變。
def corr2d(X, K): """計(jì)算⼆維互相關(guān)運(yùn)算。""" h, w = K.shape Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1)) for i in range(Y.shape[0]): for j in range(Y.shape[1]): Y[i, j] = (X[i:i + h, j:j + w] * K).sum() return Y
卷積層
卷積層對(duì)輸入和卷積核權(quán)重進(jìn)行互相關(guān)運(yùn)算,并在添加標(biāo)量偏置之后產(chǎn)生輸出。所以,卷積層中的兩個(gè)被訓(xùn)練的參數(shù)是卷積核權(quán)重核標(biāo)量偏置。就像我們之前隨機(jī)初始化全連接層一樣,在訓(xùn)練基于卷積層的模型時(shí),我們也隨機(jī)初始化卷積核權(quán)重。
基于上面定義的corr2d函數(shù)實(shí)現(xiàn)二維卷積層。在__init__構(gòu)造函數(shù)中,將weight和bias聲明為兩個(gè)模型參數(shù)。前向傳播函數(shù)調(diào)用corr2d函數(shù)并添加偏置。
class Conv2D(nn.Module): def __init__(self, kernel_size): super().__init__() self.weight = nn.Parameter(torch.rand(kernel_size)) self.bias = nn.Parameter(torch.zeros(1)) def forward(self, x): return corr2d(x, self.weight) + self.bias
高度和寬度分別為 h和 w的卷積核可以被稱為 h × w 卷積或 h × w 卷積核。我們也將帶有 h × w 卷積核的卷積層稱為 h × w 卷積層。
特征映射
下圖中輸出的卷積層有時(shí)被稱為特征映射(Feature Map),因?yàn)樗梢员灰暈橐粋€(gè)輸入映射到下一層的空間維度的轉(zhuǎn)換器。在CNN中,對(duì)于某一層的任意元素 x x x,其感受野(Receptive Field)是指在前向傳播期間可能影響 x x x計(jì)算的所有元素(來自所有先前層)。
注意,感受野的覆蓋率可能大于某層輸入的實(shí)際區(qū)域大小。
例如上圖:給定 2 × 2 卷積核,陰影輸出元素值19的接收域是陰影部分的四個(gè)元素。假設(shè)之前輸出為 Y ,其大小為 2 × 2 ,現(xiàn)在我們再其后附加一個(gè)卷積層,該卷積層以 Y 為輸入,輸出單個(gè)元素 z。再這種情況下, Y上的 z的接收字段包括 Y 的所有四個(gè)元素,而輸入的感受野包括最初所有九個(gè)輸入元素。
因此,當(dāng)一個(gè)特征圖中的任意元素需要檢測更廣區(qū)域的輸入特征時(shí),我們可以構(gòu)建一個(gè)更深的網(wǎng)絡(luò)。
以上就是Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)圖像卷積運(yùn)算詳解的詳細(xì)內(nèi)容,更多關(guān)于pytorch神經(jīng)網(wǎng)絡(luò)圖像卷積運(yùn)算的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python利用PyVista進(jìn)行mesh的色彩映射的實(shí)現(xiàn)
- Python Shiny庫創(chuàng)建交互式Web應(yīng)用及高級(jí)功能案例
- Python?Streamlit制作交互式可視化網(wǎng)頁應(yīng)用實(shí)例
- Gradio構(gòu)建交互式Python應(yīng)用使用示例詳解
- Python基于Google?Bard實(shí)現(xiàn)交互式聊天機(jī)器人
- python獲取網(wǎng)絡(luò)圖片方法及整理過程詳解
- 使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程
- Python Pyvis庫創(chuàng)建交互式網(wǎng)絡(luò)圖實(shí)例探究
相關(guān)文章
Python流程控制 if else實(shí)現(xiàn)解析
這篇文章主要介紹了Python 流程控制 if else實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Python調(diào)用實(shí)現(xiàn)最小二乘法的方法詳解
所謂線性最小二乘法,可以理解為是解方程的延續(xù),區(qū)別在于,當(dāng)未知量遠(yuǎn)小于方程數(shù)的時(shí)候,將得到一個(gè)無解的問題。本文主要和大家分享Python調(diào)用實(shí)現(xiàn)最小二乘法的方法,需要的可以參考一下2023-04-04Django model 中設(shè)置聯(lián)合約束和聯(lián)合索引的方法
今天小編就為大家分享一篇Django model 中設(shè)置聯(lián)合約束和聯(lián)合索引的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08python按順序重命名文件并分類轉(zhuǎn)移到各個(gè)文件夾中的實(shí)現(xiàn)代碼
這篇文章主要介紹了python按順序重命名文件并分類轉(zhuǎn)移到各個(gè)文件夾中,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Python繪圖實(shí)現(xiàn)臺(tái)風(fēng)路徑可視化代碼實(shí)例
這篇文章主要介紹了Python繪圖實(shí)現(xiàn)臺(tái)風(fēng)路徑可視化代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10python文件夾分區(qū)的實(shí)現(xiàn)方法實(shí)例
這篇文章主要給大家介紹了關(guān)于python文件夾分區(qū)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04