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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

深度学习之卷积神经网络(1)什么是卷积

發(fā)布時(shí)間:2023/12/15 卷积神经网络 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习之卷积神经网络(1)什么是卷积 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

深度學(xué)習(xí)之卷積神經(jīng)網(wǎng)絡(luò)(1)什么是卷積

  • 1. 全連接網(wǎng)絡(luò)的問(wèn)題
  • 2. 局部相關(guān)性
  • 3. 權(quán)值共享
  • 4. 卷積運(yùn)算

1. 全連接網(wǎng)絡(luò)的問(wèn)題

?首先我們來(lái)分析全連接網(wǎng)絡(luò)存在的問(wèn)題??紤]一個(gè)簡(jiǎn)單的4層全連接層網(wǎng)絡(luò),輸入是28×2828×2828×28打平后為784節(jié)點(diǎn)的手寫(xiě)數(shù)字圖片向量,中間三個(gè)隱藏層的節(jié)點(diǎn)數(shù)都是256,輸出層的節(jié)點(diǎn)數(shù)是10,如圖所示:




?通過(guò)TensorFlow快速地搭建此網(wǎng)絡(luò)模型,添加4個(gè)Dense層,并使用Squential容器封裝為一個(gè)網(wǎng)絡(luò)對(duì)象:

import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers, Sequential, losses, optimizers, datasets# 創(chuàng)建4層全連接網(wǎng)絡(luò) model = keras.Sequential([layers.Dense(256, activation='relu'),layers.Dense(256, activation='relu'),layers.Dense(256, activation='relu'),layers.Dense(10) ]) # build模型,并打印模型信息 model.build(input_shape=(4, 784)) # 利用summary()函數(shù)打印出模型每一層的參數(shù)量統(tǒng)計(jì)結(jié)果 model.summary()

?利用summary()函數(shù)打印出模型每一層的參數(shù)統(tǒng)計(jì)結(jié)果,如圖所示:

?網(wǎng)絡(luò)的參數(shù)量是怎么計(jì)算的呢?對(duì)于每一條連接線的權(quán)值標(biāo)量,視作一個(gè)參數(shù),因此對(duì)輸入節(jié)點(diǎn)數(shù)為nnn,輸出節(jié)點(diǎn)數(shù)為mmm的全連接層來(lái)說(shuō),W\boldsymbol WW張量包含的參數(shù)量共有n?mn\cdot mn?m個(gè),b\boldsymbol bb向量包含的參數(shù)量有mmm個(gè),則全連接的總參數(shù)量為n?m+mn\cdot m+mn?m+m。以第一層為例,輸入特征長(zhǎng)度為784,輸出特征長(zhǎng)度為256,當(dāng)前層的參數(shù)量為784?256+256=200960784\cdot 256+256=200960784?256+256=200960,同樣的方法可以計(jì)算第二、三、四層的參數(shù)量分別為: 65792、65792、2570,總參數(shù)量約34萬(wàn)個(gè)。在計(jì)算機(jī)中,如果將單個(gè)權(quán)值保存為float類型的變量,至少需要占用4個(gè)字節(jié)內(nèi)存(Python語(yǔ)言中float占用內(nèi)存更多),那么34萬(wàn)個(gè)網(wǎng)絡(luò)參數(shù)至少需要約1.34MB內(nèi)存。也就是說(shuō),單就存儲(chǔ)網(wǎng)絡(luò)的參數(shù)就需要1.34MB內(nèi)存,實(shí)際上,網(wǎng)絡(luò)的訓(xùn)練過(guò)程中還需要緩存計(jì)算機(jī)圖模型、梯度信息、輸入和中間計(jì)算結(jié)果等,其中梯度相關(guān)運(yùn)算占用資源非常多。

網(wǎng)絡(luò)參數(shù)量統(tǒng)計(jì) 層數(shù)隱藏層1隱藏層2隱藏層3輸出層
參數(shù)量20096065792657922570


?那么訓(xùn)練訓(xùn)練這樣一個(gè)網(wǎng)絡(luò)到底需要多少內(nèi)存呢?我們可以在現(xiàn)代GPU設(shè)備上簡(jiǎn)單模擬一下資源消耗情況。在TensorFlow中,如果不設(shè)置顯存占用方式,那么默認(rèn)會(huì)占用全部顯存。這里將TensorFlow的顯存使用方式設(shè)置為按需分配,觀測(cè)其真實(shí)占用的GPU顯存資源情況,代碼如下:

# 獲取所有GPU設(shè)備列表 gpus = tf.config.experimental.list_physical_devices('GPU') if gpus:try:# 設(shè)置GPU顯存占用為按需分配,增長(zhǎng)式for gpu in gpus:tf.config.experimental.set_memory_growth(gpu, True)except RuntimeError as e:# 異常處理print(e)

?上述代碼插入在TensorFlow庫(kù)導(dǎo)入后、模型創(chuàng)建前的位置,通過(guò)tf.config.experimental.set_memory_growth(gpu, True)設(shè)置TensorFlow按需申請(qǐng)顯存資源,這樣TensorFlow占用的顯存大小即為運(yùn)算需要的數(shù)量。在Batch Size設(shè)置為32的情況下,x訓(xùn)練時(shí)我們觀察到顯存占用了約708MB,內(nèi)存占用約870MB。由于現(xiàn)代深度學(xué)習(xí)框架設(shè)計(jì)考量不一樣,這個(gè)數(shù)字僅做參考。即便如此,我們也能感受到4層的全連接的計(jì)算代價(jià)并不小。
?回到1980年代,1.3MB的網(wǎng)絡(luò)參數(shù)量是什么概念呢?1989年,Yann LeCun在手寫(xiě)郵政編碼識(shí)別的論文中采用了一臺(tái)256KB內(nèi)存的計(jì)算機(jī)實(shí)現(xiàn)了他的算法,這臺(tái)計(jì)算機(jī)還配備了一塊AT&T DSP-32C的DSP計(jì)算卡(浮點(diǎn)數(shù)計(jì)算能力約為25MFLOPS)。對(duì)于1.3MB的網(wǎng)絡(luò)參數(shù),256KB內(nèi)存的計(jì)算機(jī)連網(wǎng)絡(luò)參數(shù)都裝載不下,更別提網(wǎng)絡(luò)訓(xùn)練了。由此可見(jiàn),全連接層較高的內(nèi)存占用量嚴(yán)重限制了神經(jīng)網(wǎng)絡(luò)朝著更大規(guī)模、更深層數(shù)方向的發(fā)展。

2. 局部相關(guān)性

?接下來(lái)我們探索如何避免全連接網(wǎng)絡(luò)的參數(shù)量過(guò)大的缺陷。為了便于討論,我們以圖片類型數(shù)據(jù)為輸入的場(chǎng)景為例。對(duì)于2D的圖片數(shù)據(jù),在進(jìn)入全連接層之前,需要將矩陣數(shù)據(jù)打平成1D向量,然后每個(gè)像素點(diǎn)與輸出節(jié)點(diǎn)兩兩相連,我們把連接關(guān)系非常形象地對(duì)應(yīng)到圖片的像素位置上,如圖所示:


?可以看出,網(wǎng)絡(luò)層的每個(gè)輸出節(jié)點(diǎn)都與所有的輸入節(jié)點(diǎn)5連接,用于提取所有輸出節(jié)點(diǎn)的特征信息,這種稠密的連接方式是全連接層參數(shù)量大、計(jì)算代價(jià)高的根本原因。全連接層也稱為稠密連接層(Dense Layer),輸入與輸出的關(guān)系為:
oj=σ(∑i∈nodes(I)wijxi+bj)o_j=\sigma(\sum_{i∈\text{nodes}(I)}{w_{ij} x_i+b_j} )oj?=σ(inodes(I)?wij?xi?+bj?)
其中nodes(I)\text{nodes}(I)nodes(I)表示I\text{I}I層的節(jié)點(diǎn)集合。

?那么,輸出節(jié)點(diǎn)是否有必要和全部的輸入節(jié)點(diǎn)相連接呢?有沒(méi)有一種近似的簡(jiǎn)化模型呢?我們可以分析輸入節(jié)點(diǎn)對(duì)輸出節(jié)點(diǎn)的重要性分布,僅考慮較重要的一部分輸入節(jié)點(diǎn),而拋棄重要性較低的部分節(jié)點(diǎn),這樣輸出節(jié)點(diǎn)只需要與部分輸入節(jié)點(diǎn)相連接,表達(dá)為:
oj=σ(∑i∈top(I,j,k)wijxi+bj)o_j=\sigma(\sum_{i∈\text{top}(I,j,k)}{w_{ij} x_i+b_j} )oj?=σ(itop(I,j,k)?wij?xi?+bj?)
其中top(I,j,k)\text{top}(I,j,k)top(I,j,k)表示I\text{I}I層中對(duì)于J\text{J}J層中的jjj號(hào)節(jié)點(diǎn)重要性最高的前kkk個(gè)節(jié)點(diǎn)集合。通過(guò)這種方式,可以把全連接層的∥I∥?∥J∥\Vert I\Vert \cdot \Vert J\VertI?J個(gè)權(quán)值連接減少到k?∥J∥k \cdot\Vert J\Vertk?J個(gè),其中∥I∥\Vert I\VertI、∥J∥\Vert J\VertJ分別表示I\text{I}I、J\text{J}J層的節(jié)點(diǎn)數(shù)量。

?那么問(wèn)題就轉(zhuǎn)變?yōu)樘剿?span id="ozvdkddzhkzd" class="katex--inline">I\text{I}I層輸入節(jié)點(diǎn)對(duì)于j號(hào)輸出節(jié)點(diǎn)的重要性分布。然而找出每個(gè)中間節(jié)點(diǎn)的重要性分布是件非常困難的事情,我們可以針對(duì)于具體問(wèn)題,利用先驗(yàn)知識(shí)把這個(gè)問(wèn)題進(jìn)一步簡(jiǎn)化。
?在現(xiàn)實(shí)生活中,存在著大量以位置或距離作為重要性分布衡量標(biāo)準(zhǔn)的數(shù)據(jù),比如和自己居住更近的人更有可能對(duì)自己影響更大(位置相關(guān)),股票的走勢(shì)預(yù)測(cè)應(yīng)該更加關(guān)注近段時(shí)間的數(shù)據(jù)趨勢(shì)(時(shí)間相關(guān)),圖片每個(gè)像素點(diǎn)和周邊像素點(diǎn)的關(guān)聯(lián)度更大(位置相關(guān))。以2D圖片為例,如果簡(jiǎn)單地認(rèn)為與當(dāng)前像素歐式距離(Euclidean Distance)≤k2\le \frac{k}{\sqrt 2}2?k?的像素點(diǎn)重要性較高,歐式距離>k2>\frac{k}{\sqrt 2}>2?k?的像素點(diǎn)重要性較低,那么我們就很輕松地建華路每個(gè)像素點(diǎn)的重要性分布問(wèn)題。如圖所示:

圖片像素的重要性分布


?可以看出,以紅色實(shí)心網(wǎng)格所在的像素為參考點(diǎn),它周邊歐式距離≤k2\le \frac{k}{\sqrt 2}2?k?的像素點(diǎn)以矩形網(wǎng)格表示,網(wǎng)格內(nèi)的像素點(diǎn)重要性較高,網(wǎng)格外的像素點(diǎn)較低。這個(gè)高寬為k的窗口稱為感受野(Reception Field),它表征了每個(gè)像素對(duì)中心像素的重要性分布情況,網(wǎng)格內(nèi)的像素才會(huì)被考慮,網(wǎng)格外的像素對(duì)于中心像素會(huì)被簡(jiǎn)單地忽略。
?這種基于距離的重要性分布假設(shè)特性稱為局部相關(guān)性,它只關(guān)注和自己距離較近的部分節(jié)點(diǎn),而忽略距離較遠(yuǎn)的節(jié)點(diǎn)。在這種重要性分布假設(shè)下,全連接層的連接模式變成了如圖所示,輸出節(jié)點(diǎn)j只與以j為中心的局部區(qū)域(感受野)相連接,與其它像素?zé)o連接。

局部連接的網(wǎng)絡(luò)層示意圖


?利用局部相關(guān)性的思想,我們把感受野窗口的高、寬記為k(感受野的高、寬可以不相等,為了便于表達(dá),這里只討論高寬相等的情況),當(dāng)前位置的節(jié)點(diǎn)與大小為k的窗口內(nèi)的所有像素相連接,與窗口外的其它像素點(diǎn)無(wú)關(guān),此時(shí)網(wǎng)絡(luò)層的輸入輸出關(guān)系表達(dá)如下:
oj=σ(∑dist(i,j)≤k2wijxi+bj)o_j=\sigma(\sum_{\text{dist}(i,j)\le \frac{k}{\sqrt 2}}{w_{ij} x_i+b_j} )oj?=σ(dist(i,j)2?k??wij?xi?+bj?)
其中dist(i,j)\text{dist}(i,j)dist(i,j)表示節(jié)點(diǎn)i、j之間的歐式距離。

3. 權(quán)值共享

?每個(gè)輸出節(jié)點(diǎn)僅與感受野區(qū)域內(nèi)k×kk×kk×k個(gè)輸入節(jié)點(diǎn)相連接,輸出層節(jié)點(diǎn)數(shù)為∥J∥\Vert J\VertJ,則當(dāng)前層的參數(shù)量為k×k×∥J∥k×k×\Vert J\Vertk×k×J,相對(duì)于全連接層的∥I∥×∥J∥\Vert I\Vert \times\Vert J\VertI×J,考慮到kkk一般取值較小,如1、3、5等,k×k?∥J∥k×k?\Vert J\Vertk×k?J,因此成功地將參數(shù)量減少了很多。

?能否再將參數(shù)量進(jìn)一步減小,比如只需要k×kk×kk×k個(gè)參數(shù)即可完成當(dāng)前層的計(jì)算?答案是肯定的,通過(guò)權(quán)值共享的思想,對(duì)于每個(gè)輸出節(jié)點(diǎn)ojo_joj?,均使用相同的權(quán)值矩陣W\boldsymbol WW,那么無(wú)論輸出節(jié)點(diǎn)的數(shù)量∥J∥\Vert J\VertJ是多少,網(wǎng)絡(luò)層的參數(shù)量總是k×kk×kk×k。如圖所示:

權(quán)值共享矩陣示意圖


?在計(jì)算左上角位置的輸出像素時(shí),使用權(quán)值矩陣:
W=[w11w12w13w21w22w23w31w32w33]\boldsymbol W=\begin{bmatrix}w_{11}&w_{12}&w_{13}\\ w_{21}&w_{22}&w_{23}\\ w_{31}&w_{32}&w_{33} \end{bmatrix}W=???w11?w21?w31??w12?w22?w32??w13?w23?w33?????


?與對(duì)應(yīng)感受野內(nèi)部的像素相乘累加,作為左上角像素的輸出值; 在計(jì)算右下方感受野區(qū)域時(shí),共享權(quán)值參數(shù)W\boldsymbol WW,即使用相同的權(quán)值參數(shù)W相乘累加,得到右下角像素的輸出值,此時(shí)網(wǎng)絡(luò)層的參數(shù)量只有3×3=93×3=93×3=9個(gè),且與輸入、輸出節(jié)點(diǎn)數(shù)無(wú)關(guān)。
?通過(guò)運(yùn)用局部相關(guān)性和權(quán)值共享的思想,我們成功把網(wǎng)絡(luò)的參數(shù)量從∥I∥×∥J∥\Vert I\Vert \times\Vert J\VertI×J減少到k×kk×kk×k(準(zhǔn)確地說(shuō),是在單輸入通道、單卷積核的條件下)。這種權(quán)值共享的“局部連接層”網(wǎng)絡(luò)其實(shí)就是卷積神經(jīng)網(wǎng)絡(luò)。接下來(lái)我們將從數(shù)學(xué)角度介紹卷積運(yùn)算,進(jìn)而正式學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的原理與計(jì)算方法。

4. 卷積運(yùn)算

?在局部相關(guān)性的先驗(yàn)下,我們提出了簡(jiǎn)化的“局部連接層”,對(duì)于窗口k×kk×kk×k內(nèi)的所有像素,采用權(quán)值相乘累加的方式提取特征信息,每個(gè)輸出節(jié)點(diǎn)提取對(duì)應(yīng)感受野區(qū)域的特征信息。這種運(yùn)算其實(shí)是信號(hào)處理領(lǐng)域的一種標(biāo)準(zhǔn)運(yùn)算: 離散卷積運(yùn)算。離散卷積運(yùn)算在計(jì)算機(jī)視覺(jué)領(lǐng)域中有著廣泛的應(yīng)用,這里給出卷積網(wǎng)絡(luò)層從數(shù)學(xué)角度的闡述。
?在信號(hào)處理領(lǐng)域,1D連續(xù)信號(hào)的卷積運(yùn)算被定義兩個(gè)函數(shù)的積分: 函數(shù)f(τ)f(τ)f(τ)、函數(shù)g(τ)g(τ)g(τ),其中g(τ)g(τ)g(τ)經(jīng)過(guò)了翻轉(zhuǎn)g(?τ)g(-τ)g(?τ)和平移后變成g(n?τ)g(n-τ)g(n?τ)。卷積的“卷”是指翻轉(zhuǎn)平移操作,“積”是指積分運(yùn)算,1D連續(xù)卷積定義為:
(f?g)(n)=∫?∞∞f(τ)g(n?τ)dτ(f\otimes g)(n)=\int_{-\infty}^{\infty}f(τ)g(n-τ)dτ(f?g)(n)=??f(τ)g(n?τ)dτ
離散卷積將積分運(yùn)算換成累加運(yùn)算:
(f?g)(n)=∑τ=?∞∞f(τ)g(n?τ)(f\otimes g)(n)=\sum_{τ=-∞}^∞f(τ)g(n-τ)(f?g)(n)=τ=??f(τ)g(n?τ)
注:


?至于卷積為什么這么定義,限于篇幅不做深入闡述。我們重點(diǎn)介紹2D離散卷積運(yùn)算。在計(jì)算機(jī)視覺(jué)中,卷積運(yùn)算基于2D圖片函數(shù)f(m,n)f(m,n)f(m,n)和2D卷積核g(m,n)g(m,n)g(m,n),其中f(i,j)f(i,j)f(i,j)g(i,j)g(i,j)g(i,j)僅在各自窗口有效區(qū)域存在值,其它區(qū)域視為0,如圖所示:

此時(shí)的2D離散卷積定義為:
(f?g)(m,n)=∑i=?∞∞∑j=?∞∞f(i,j)g(m?i,n?j)(f\otimes g)(m,n)=\sum_{i=-∞}^∞\sum_{j=-∞}^∞f(i,j)g(m-i,n-j)(f?g)(m,n)=i=??j=??f(i,j)g(m?i,n?j)
我們來(lái)詳細(xì)介紹2D卷積運(yùn)算。首先,將卷積核g(i,j)g(i,j)g(i,j)函數(shù)翻轉(zhuǎn)(沿著xxxyyy方向各翻轉(zhuǎn)一次),變成g(?i,?j)g(-i,-j)g(?i,?j)。
當(dāng)(m,n)=(?1,?1)(m,n)=(-1,-1)(m,n)=(?1,?1)時(shí),g(?1?i,?1?j)g(-1-i,-1-j)g(?1?i,?1?j)表示卷積核翻轉(zhuǎn)后再向左、向上各平移一個(gè)單元,此時(shí):
(f?g)(?1,?1)=∑i=?∞∞∑j=?∞∞f(i,j)g(?1?i,?1?j)=∑i∈[?1,1]∞∑j∈[?1,1]∞f(i,j)g(?1?i,?1?j)\begin{aligned} (f\otimes g)(-1,-1) &=\sum_{i=-∞}^∞\sum_{j=-∞}^∞f(i,j)g(-1-i,-1-j)\\ &=\sum_{i\in[-1,1]}^∞\sum_{j\in[-1,1]}^∞f(i,j)g(-1-i,-1-j) \end{aligned}(f?g)(?1,?1)?=i=??j=??f(i,j)g(?1?i,?1?j)=i[?1,1]?j[?1,1]?f(i,j)g(?1?i,?1?j)?
2D函數(shù)只在i∈[?1,1],j∈[?1,1]i∈[-1,1],j∈[-1,1]i[?1,1],j[?1,1]存在有效值,其它位置為0。如下圖所示:

離散卷積運(yùn)算1


同理,當(dāng)(m,n)=(0,?1)(m,n)=(0,-1)(m,n)=(0,?1)時(shí):
(f?g)(0,?1)=∑i∈[?1,1]∞∑j∈[?1,1]∞f(i,j)g(0?i,?1?j)(f\otimes g)(0,-1)=\sum_{i\in[-1,1]}^∞\sum_{j\in[-1,1]}^∞f(i,j)g(0-i,-1-j)(f?g)(0,?1)=i[?1,1]?j[?1,1]?f(i,j)g(0?i,?1?j)

即卷積核翻轉(zhuǎn)后再向上平移一個(gè)單元后對(duì)應(yīng)位置相乘累加:
(f?g)(0,?1)=7(f\otimes g)(0,-1)=7(f?g)(0,?1)=7
如下圖所示:

離散卷積運(yùn)算2


當(dāng)(m,n)=(1,?1)(m,n)=(1,-1)(m,n)=(1,?1)時(shí):
(f?g)(1,?1)=∑i∈[?1,1]∞∑j∈[?1,1]∞f(i,j)g(1?i,?1?j)(f\otimes g)(1,-1)=\sum_{i\in[-1,1]}^∞\sum_{j\in[-1,1]}^∞f(i,j)g(1-i,-1-j)(f?g)(1,?1)=i[?1,1]?j[?1,1]?f(i,j)g(1?i,?1?j)

即卷積核翻轉(zhuǎn)后再向右、向上平移一個(gè)單元后對(duì)應(yīng)位置相乘累加:
(f?g)(1,?1)=1(f\otimes g)(1,-1)=1(f?g)(1,?1)=1
如下圖所示:

離散卷積運(yùn)算3


當(dāng)(m,n)=(?1,0)(m,n)=(-1,0)(m,n)=(?1,0)時(shí):
(f?g)(?1,0)=∑i∈[?1,1]∞∑j∈[?1,1]∞f(i,j)g(?1?i,0?j)(f\otimes g)(-1,0)=\sum_{i\in[-1,1]}^∞\sum_{j\in[-1,1]}^∞f(i,j)g(-1-i,0-j)(f?g)(?1,0)=i[?1,1]?j[?1,1]?f(i,j)g(?1?i,0?j)
即卷積核翻轉(zhuǎn)后再向左平移一個(gè)單元后對(duì)應(yīng)位置相乘累加:
(f?g)(?1,0)=?8(f\otimes g)(-1,0)=-8(f?g)(?1,0)=?8
如下圖所示:

離散卷積運(yùn)算4


按照此種方式循環(huán)計(jì)算,可以計(jì)算出函數(shù)[f?g](m,n),m∈[?1,1],n∈[?1,1][f\otimes g](m,n),m∈[-1,1],n∈[-1,1][f?g](m,n),m[?1,1],n[?1,1]的所有值,如下圖所示:

2D離散卷積運(yùn)算


?至此,我們成功完成圖片函數(shù)與卷積核函數(shù)的卷積運(yùn)算,得到一個(gè)新的特征圖。
?回顧“權(quán)值相乘累加”的運(yùn)算,我們把它即為[f?g](m,n)[f\cdot g](m,n)[f?g](m,n):
(f?g)(m,n)=∑i∈[?w/2,w/2]∞∑j∈[?h/2,h/2]∞f(i,j)g(i?m,j?m)(f\cdot g)(m,n)=\sum_{i\in[-w/2,w/2]}^∞\sum_{j\in[-h/2,h/2]}^∞f(i,j)g(i-m,j-m)(f?g)(m,n)=i[?w/2,w/2]?j[?h/2,h/2]?f(i,j)g(i?m,j?m)
仔細(xì)比較它與標(biāo)準(zhǔn)的2D卷積運(yùn)算不難發(fā)現(xiàn),在“權(quán)值相乘累加”中的卷積核函數(shù)g(m,n)g(m,n)g(m,n),并沒(méi)有經(jīng)過(guò)翻轉(zhuǎn)。只不過(guò)對(duì)于神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),目標(biāo)是學(xué)到一個(gè)函數(shù)g(m,n)g(m,n)g(m,n)使得L\mathcal{L}L越小越好,至于g(m,n)g(m,n)g(m,n)是不是恰好就是卷積運(yùn)算中定義的“卷積核”函數(shù)并不十分重要,因?yàn)槲覀儾⒉粫?huì)直接利用它。在深度學(xué)習(xí)中,函數(shù)g(m,n)g(m,n)g(m,n)統(tǒng)一稱為卷積核(Kernel),有時(shí)也叫Filter、Weight等。由于始終使用g(m,n)g(m,n)g(m,n)函數(shù)完成卷積運(yùn)算,卷積運(yùn)算其實(shí)已經(jīng)實(shí)現(xiàn)了權(quán)值共享的思想。

?我們來(lái)小結(jié)2D離散卷積運(yùn)算流程: 每次通過(guò)移動(dòng)卷積核,并與圖片對(duì)應(yīng)位置處的感受野像素相乘累加,得到此位置的輸出值。卷積核即是行、列為kkk大小的權(quán)值矩陣W\boldsymbol WW,對(duì)應(yīng)到特征圖上大小為kkk的窗口即為感受野,感受野與權(quán)值矩陣W\boldsymbol WW相乘累加,得到此位置的輸出值。通過(guò)權(quán)值共享,我們從左上方逐步向右、向下移動(dòng)卷積核,提取每個(gè)位置上的像素特征,直至最右下方,完成卷積運(yùn)算??梢钥闯?#xff0c;兩種理解方式殊途同歸,從數(shù)學(xué)角度理解卷積神經(jīng)網(wǎng)絡(luò)即是完成了2D函數(shù)的離散卷積運(yùn)算; 從局部相關(guān)與權(quán)值共享角度理解,也能的帶一樣的效果。通過(guò)這兩種角度,我們既能直觀理解卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算流程,又能嚴(yán)謹(jǐn)?shù)貜臄?shù)學(xué)角度進(jìn)行推導(dǎo)。正是基于卷積運(yùn)算,卷積神經(jīng)網(wǎng)絡(luò)才能如此命名。
?在計(jì)算機(jī)視覺(jué)領(lǐng)域,2D卷積運(yùn)算能夠提取數(shù)據(jù)的有用特征,通過(guò)特定的卷積核與輸入圖片進(jìn)行卷積運(yùn)算,獲得不同特征的輸出圖片,如下表所示,列舉了一些常見(jiàn)的卷積核及其效果樣片。

常見(jiàn)卷積核及其效果

參考文獻(xiàn):
[1] 龍良曲:《深度學(xué)習(xí)與TensorFlow2入門實(shí)戰(zhàn)》

總結(jié)

以上是生活随笔為你收集整理的深度学习之卷积神经网络(1)什么是卷积的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。