卷積神經(jīng)網(wǎng)絡(luò)

CNN

一璃诀、卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

1.全連接神經(jīng)網(wǎng)絡(luò)

基于全連接層(Affine 層)的網(wǎng)絡(luò)

2.卷積神經(jīng)網(wǎng)絡(luò)

全連接層存在的問題:數(shù)據(jù)的形狀被“忽視”了
例如弧可,輸入數(shù)據(jù)是圖像時,圖像通常是高劣欢、長棕诵、通道方向上的 3 維形狀。但是凿将,向全連接層輸入時校套,需要將 3 維數(shù)據(jù)拉平為 1 維數(shù)據(jù)。實(shí)際上牧抵,前面提到的使用了 MNIST 數(shù)據(jù)集的例子中笛匙,輸入圖像就是 1 通道、高 28 像素犀变、長 28 像素的(1, 28, 28)形狀妹孙,但卻被排成 1 列,以 784 個數(shù)據(jù)的形式輸入到最開始的 Affine 層获枝。
圖像是 3 維形狀蠢正,這個形狀中應(yīng)該含有重要的空間信息。例如省店,空間上鄰近的像素為相似的值嚣崭、RBG 的各個通道之間分別有密切的關(guān)聯(lián)性、相距較遠(yuǎn)的像素之間沒有什么關(guān)聯(lián)等懦傍,3 維形狀中可能隱藏有值得提取的本質(zhì)模式有鹿。但是,因?yàn)槿B接層會忽視形狀谎脯,將全部的輸入數(shù)據(jù)作為相同的神經(jīng)元(同一維度的神經(jīng)元)處理,所以無法利用與形狀相關(guān)的信息持寄。

而卷積層可以保持形狀不變源梭。當(dāng)輸入數(shù)據(jù)是圖像時,卷積層會以 3 維數(shù)據(jù)的形式接收輸入數(shù)據(jù)稍味,并同樣以 3 維數(shù)據(jù)的形式輸出至下一層废麻。因此,在 CNN 中模庐,可以(有可能)正確理解圖像等具有形狀的數(shù)據(jù)烛愧。
CNN 中,有時將卷積層的輸入輸出數(shù)據(jù)稱為特征圖(feature map)。其中怜姿,卷積層的輸入數(shù)據(jù)稱為輸入特征圖(input feature map)慎冤,輸出數(shù)據(jù)稱為輸出特征圖(output feature map)

基于 CNN 的網(wǎng)絡(luò)

二沧卢、卷積層

1.卷積運(yùn)算(Convolution)

卷積運(yùn)算

帶偏置的卷積運(yùn)算

2.填充(Padding)

在進(jìn)行卷積層的處理之前蚁堤,有時要向輸入數(shù)據(jù)的周圍填入固定的數(shù)據(jù)(比如0等)。


幅度為 1 的填充(向輸入數(shù)據(jù)的周圍填入 0)

3.卷積步長(Stride)

應(yīng)用濾波器的位置間隔稱為步長(stride)但狭。


步長為 2 的卷積運(yùn)算

假設(shè)輸入大小為 (H, W)披诗,濾波器大小為 (FH, FW),輸出大小為 (OH, OW)立磁,填充為 P呈队,步幅為 S。此時唱歧,輸出大小為


4.多通道卷積

通道方向上有多個特征圖時宪摧,會按通道進(jìn)行輸入數(shù)據(jù)和濾波器的卷積運(yùn)算,并將結(jié)果相加迈喉,從而得到輸出绍刮。


通道數(shù)為C

多個濾波器

5.卷積層完整處理流

卷積層處理流

卷積層處理流(批處理)

三、池化層

池化運(yùn)算( Max 池化)

除了 Max 池化之外挨摸,還有 Average 池化等孩革。相對于 Max 池化是從目標(biāo)區(qū)域中取出最大值,Average 池化則是計(jì)算目標(biāo)區(qū)域的平均值得运。在圖像識別領(lǐng)域膝蜈,主要使用 Max 池化。

池化層的特征

  • 1.沒有要學(xué)習(xí)的參數(shù)

池化層和卷積層不同熔掺,沒有要學(xué)習(xí)的參數(shù)饱搏。池化只是從目標(biāo)區(qū)域中取最大值(或者平均值),所以不存在要學(xué)習(xí)的參數(shù)置逻。

  • 2.通道數(shù)不發(fā)生變化

經(jīng)過池化運(yùn)算推沸,輸入數(shù)據(jù)和輸出數(shù)據(jù)的通道數(shù)不會發(fā)生變化。


通道數(shù)不變性
  • 3.對微小的位置變化具有魯棒性

輸入數(shù)據(jù)發(fā)生微小偏差時券坞,池化仍會返回相同的結(jié)果鬓催。因此,池化對輸入數(shù)據(jù)的微小偏差具有魯棒性恨锚。


微小偏差魯棒性

四宇驾、卷積層實(shí)現(xiàn)

1.基于 im2col 的展開

如果老老實(shí)實(shí)地實(shí)現(xiàn)卷積運(yùn)算,估計(jì)要重復(fù)好幾層的 for 語句猴伶。這樣的實(shí)現(xiàn)有點(diǎn)麻煩课舍,而且塌西,NumPy 中存在使用 for 語句后處理變慢的缺點(diǎn)(NumPy 中,訪問元素時最好不要用 for 語句)筝尾。這里捡需,我們不使用 for 語句,而是使用 im2col 這個便利的函數(shù)進(jìn)行簡單的實(shí)現(xiàn)忿等。

im2col 是一個函數(shù)栖忠,將輸入數(shù)據(jù)展開以適合濾波器(權(quán)重)。如圖 7-17 所示贸街,對 3 維的輸入數(shù)據(jù)應(yīng)用 im2col 后庵寞,數(shù)據(jù)轉(zhuǎn)換為 2 維矩陣(正確地講,是把包含批數(shù)量的 4 維數(shù)據(jù)轉(zhuǎn)換成了 2 維數(shù)據(jù))薛匪。



將濾波器的應(yīng)用區(qū)域從頭開始依次橫向展開為 1 列


卷積運(yùn)算的濾波器處理的細(xì)節(jié):將濾波器縱向展開為 1 列捐川,并計(jì)算和 im2col 展開的數(shù)據(jù)的矩陣乘積,最后轉(zhuǎn)換(reshape)為輸出數(shù)據(jù)的大小逸尖。

 class Convolution:
    def __init__(self, W, b, stride=1, pad=0):
        self.W = W
        self.b = b
        self.stride = stride
        self.pad = pad

    def forward(self, x):
        FN, C, FH, FW = self.W.shape
        N, C, H, W = x.shape
        out_h = int(1 + (H + 2*self.pad - FH) / self.stride)
        out_w = int(1 + (W + 2*self.pad - FW) / self.stride)

        col = im2col(x, FH, FW, self.stride, self.pad)
        col_W = self.W.reshape(FN, -1).T # 濾波器的展開
        out = np.dot(col, col_W) + self.b

        out = out.reshape(N, out_h, out_w, -1).transpose(0, 3, 1, 2)

        return out

五古沥、池化層實(shí)現(xiàn)

對輸入數(shù)據(jù)展開池化的應(yīng)用區(qū)域(2×2 的池化的例子)

池化層的實(shí)現(xiàn)流程:池化的應(yīng)用區(qū)域內(nèi)的最大值元素用灰色表示
class Pooling:
    def __init__(self, pool_h, pool_w, stride=1, pad=0):
        self.pool_h = pool_h
        self.pool_w = pool_w
        self.stride = stride
        self.pad = pad

    def forward(self, x):
        N, C, H, W = x.shape
        out_h = int(1 + (H - self.pool_h) / self.stride)
        out_w = int(1 + (W - self.pool_w) / self.stride)

        # 展開(1)
        col = im2col(x, self.pool_h, self.pool_w, self.stride, self.pad)
        col = col.reshape(-1, self.pool_h*self.pool_w)

        # 最大值(2)
        out = np.max(col, axis=1)
        # 轉(zhuǎn)換(3)
        out = out.reshape(N, out_h, out_w, C).transpose(0, 3, 1, 2)

        return out

六、常見構(gòu)筑與算法

1.一維構(gòu)筑

(1)時間延遲網(wǎng)絡(luò)(Time Delay Neural Network, TDNN)

(2)WaveNet

2.二維構(gòu)筑

(1)LeNet

(2)AlexNet

3.全卷積構(gòu)筑

(1)SRCNN(Super Resolution CNN)

(2)U-Net

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娇跟,一起剝皮案震驚了整個濱河市岩齿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苞俘,老刑警劉巖盹沈,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吃谣,居然都是意外死亡乞封,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門岗憋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肃晚,“玉大人,你說我怎么就攤上這事仔戈」卮” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵监徘,是天一觀的道長晋修。 經(jīng)常有香客問我,道長耐量,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任滤港,我火速辦了婚禮廊蜒,結(jié)果婚禮上趴拧,老公的妹妹穿的比我還像新娘。我一直安慰自己山叮,他們只是感情好著榴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屁倔,像睡著了一般脑又。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锐借,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天问麸,我揣著相機(jī)與錄音,去河邊找鬼钞翔。 笑死严卖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的布轿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼码党!你這毒婦竟也來了冀痕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤萝毛,失蹤者是張志新(化名)和其女友劉穎项阴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珊泳,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲁冯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了色查。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薯演。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秧了,靈堂內(nèi)的尸體忽然破棺而出跨扮,到底是詐尸還是另有隱情,我是刑警寧澤验毡,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布衡创,位于F島的核電站,受9級特大地震影響晶通,放射性物質(zhì)發(fā)生泄漏璃氢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一狮辽、第九天 我趴在偏房一處隱蔽的房頂上張望一也。 院中可真熱鬧巢寡,春花似錦、人聲如沸椰苟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舆蝴。三九已至谦絮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洁仗,已是汗流浹背层皱。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留京痢,地道東北人奶甘。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像祭椰,于是被迫代替她去往敵國和親臭家。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容