机器学习——深度学习之卷积神经网络(CNN)——LeNet卷积神经网络结构
目錄
一、卷積神經(jīng)網(wǎng)絡(luò)
1、卷積神經(jīng)的作用
2、LeNet
1)數(shù)據(jù)庫(kù)準(zhǔn)備——minst
2)模型·
二、關(guān)于卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的一些術(shù)語(yǔ)定義
1、特征圖(Feature map)
2、height(長(zhǎng)度)、width(寬度)、Channel(通道)
3、卷積核(convolution kernel、filter)
4、步長(zhǎng)(stride)
1)步長(zhǎng)剛好使得卷積核遍歷圖像
2)步長(zhǎng)不能使得卷積核遍歷圖像
問題1:原始圖像有一些數(shù)據(jù)沒有被卷積核訓(xùn)練怎么解決?
5、小結(jié)——原始圖像大小、卷積核大小、步長(zhǎng)核特征圖像大小之間有什么關(guān)系
三、LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
1、LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型
2、LeNet第一層卷積層 convolution
1)LeNet第一層卷積層模型
2) LeNet第一層卷積層待求參數(shù)個(gè)數(shù)
3)共享權(quán)重(weight sharing)
問題2:上圖的神經(jīng)網(wǎng)絡(luò)和之前學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)(常規(guī)神經(jīng)網(wǎng)絡(luò))有什么區(qū)別?
2、LeNet第二層池化層 (subsampling)
問題3:卷積后進(jìn)行后向傳播時(shí)按照正常的BP即可,但是池化后的層進(jìn)行進(jìn)行后向傳播到池化前的層呢?
3、LeNet第三層卷積層 (convolution)
4、全連接層(full connection)
1)全連接層的模型和定義
2)全連接層的待定參數(shù)
5、輸出層(OUTPUT)
1)目標(biāo)函數(shù)E
問題4:什么是SoftMax?
6、LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)計(jì)算
四、TENSORFLOW實(shí)現(xiàn)LeNet-5
圖 LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)前接:《機(jī)器學(xué)習(xí)——深度學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)和自編碼器》
一、卷積神經(jīng)網(wǎng)絡(luò)
1、卷積神經(jīng)的作用
由手工設(shè)計(jì)卷積核轉(zhuǎn)換為自動(dòng)學(xué)習(xí)卷積核
卷積公式有很多:如傅里葉變換、小波變換等
卷積核主要的作用就是將元素先乘再加(積分的本質(zhì)就是加)
2、LeNet
1)數(shù)據(jù)庫(kù)準(zhǔn)備——minst
2)模型·
二、關(guān)于卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的一些術(shù)語(yǔ)定義
圖 LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)1、特征圖(Feature map)
原圖像經(jīng)過卷積核作用得到的圖像稱為特征圖,如圖 LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)所示
2、height(長(zhǎng)度)、width(寬度)、Channel(通道)
height和width定義了圖像(我們叫做tensor張量)的大小,長(zhǎng)寬
channel定義了圖像的顏色,如果是彩色channel=3,表示rgb三原色,如果是黑白二值圖,則channel=1
如圖 LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),圖像的大小為32*32,具體的單位應(yīng)該是像素,顏色為彩色因?yàn)閏hannel=3
3、卷積核(convolution kernel、filter)
如圖 LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),卷積核的大小為5*5,也是彩色,這里的卷積核可以理解為是一個(gè)小的圖像,活動(dòng)范圍是32*32*3的長(zhǎng)方體內(nèi),按照一定的規(guī)律,卷積核可以對(duì)圖像進(jìn)行掃描
以二值圖為例進(jìn)行說明
二值圖像大小為3*3*1,卷積核為2*2*1,用卷積核從左上角開始進(jìn)行掃描,按照一行一行進(jìn)行,將卷積核與掃描重合的圖像對(duì)應(yīng)的參數(shù)進(jìn)行相乘然后再相加,得到卷積核在該位置的卷積數(shù),如上圖的Pi,上圖還有一個(gè)偏置(大家可以按照人工神經(jīng)網(wǎng)絡(luò)的模型去理解這里的b),上圖圖像處每一個(gè)顏色框代表卷積核掃描的一個(gè)地方,掃描的地方就是在進(jìn)行卷積,最后會(huì)得到如下圖所示的公式。每移動(dòng)一個(gè)地方,就對(duì)應(yīng)得到了特征圖的一個(gè)參數(shù)
那么卷積核究竟該按照什么規(guī)律去移動(dòng)呢,這就涉及到了步長(zhǎng)這個(gè)概念。
4、步長(zhǎng)(stride)
步長(zhǎng)顧名思義就是每一步移動(dòng)的長(zhǎng)度,這里的步長(zhǎng)控制的是卷積核掃描的長(zhǎng)度,如stride=【1,1】表示的是卷積核每一步向右移動(dòng)一個(gè)單位長(zhǎng)度,換行時(shí)也是在縱向上移動(dòng)一個(gè)單位長(zhǎng)度
如下圖移動(dòng)的步長(zhǎng)就是【1,1】
1)步長(zhǎng)剛好使得卷積核遍歷圖像
圖像5*5*3
卷積核2*2*3
步長(zhǎng)【1,1】
特征圖像4*4*1
2)步長(zhǎng)不能使得卷積核遍歷圖像
圖像5*5*3
卷積核2*2*3
步長(zhǎng)【2,2】
特征圖像2*2*1
由上圖可知原始圖像沒有被卷積核全部遍歷(上圖紅色框圖部分)
問題1:原始圖像有一些數(shù)據(jù)沒有被卷積核訓(xùn)練怎么解決?
答:補(bǔ)零法(zero-padding)
如下圖所示將原始圖像兩邊用零補(bǔ)齊,使得原始圖像的原有特征能夠全部被卷積核所卷積
最多補(bǔ)零數(shù)為四周均不加一層零
5、小結(jié)——原始圖像大小、卷積核大小、步長(zhǎng)核特征圖像大小之間有什么關(guān)系
假設(shè)有:
原始圖像大小:M*N*3
卷積核大小:m*n*3
步長(zhǎng):(u,v)
特征圖像大小:K*L*1
則有:
K<=(M-m)/u + 1
L<=(N-n)/v + 1
三、LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
1、LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型
分為5層
第一層卷積層——convolution
第二層池化層——subsampling
第三層卷積層——convolution
第四層池化層——subsampling
第五層:
全連接層——full connection
全連接層——full connection
2、LeNet第一層卷積層 convolution
32*32*3——28*28*6
1)LeNet第一層卷積層模型
?
特征圖的個(gè)數(shù)和卷積核的個(gè)數(shù)是一樣的,具體點(diǎn)就是特征圖像的channel的值和卷積核的個(gè)數(shù)相同
注意:非線性轉(zhuǎn)換不會(huì)改變圖像的大小,只是對(duì)圖像的每一個(gè)特征進(jìn)行非線性變化,最后得到的大小和非線性變換前是一樣的
?
2) LeNet第一層卷積層待求參數(shù)個(gè)數(shù)
首先是一個(gè)卷積核中的參數(shù)個(gè)數(shù)為:
m=5*5*3 = 75
在LeNet中有6個(gè)卷積核則:6m = 75*6=450
注意:以上的參數(shù)的個(gè)數(shù)沒有偏置,一般一個(gè)卷積核是會(huì)自帶一個(gè)偏置的,即b,所以有卷積核參數(shù)為:
6*(m+1)=6*76=456,有沒有偏置有自己定義
實(shí)際上b是一個(gè)和卷積核大小一樣的矩陣,但是一般將其作為一個(gè)參數(shù)來進(jìn)行處理
其實(shí)偏置的形式可以通過原始圖像大小、卷積核大小、步長(zhǎng)核特征圖像大小之間的關(guān)系來進(jìn)行確定的,先計(jì)算出特征圖像的大小(K,L),這樣的話偏置的形式和特征圖像的大小是一樣的
3)共享權(quán)重(weight sharing)
共享權(quán)重就是同一個(gè)權(quán)重被不同的神經(jīng)元之間所共享,或者說不同的神經(jīng)元之間的權(quán)重有相同的
這里可以用類似于神經(jīng)網(wǎng)絡(luò)的方法來表示以下圖的關(guān)系
?
問題2:上圖的神經(jīng)網(wǎng)絡(luò)和之前學(xué)習(xí)人工神經(jīng)網(wǎng)絡(luò)(常規(guī)神經(jīng)網(wǎng)絡(luò))有什么區(qū)別?
答:兩個(gè)區(qū)別:
不本質(zhì)區(qū)別:上圖中,并不是所有的輸入神經(jīng)元和下一層的神經(jīng)元都有權(quán)重,即只有部分神經(jīng)元之間進(jìn)行了連線,而常規(guī)的神經(jīng)網(wǎng)絡(luò)是每個(gè)神經(jīng)元之間都有需要連線的即有權(quán)重,但是這個(gè)區(qū)別我們把沒有連線之間神經(jīng)元的權(quán)重看成是0即可,因此此為不本質(zhì)區(qū)別
本質(zhì)區(qū)別:上圖神經(jīng)網(wǎng)絡(luò)的權(quán)重是共享的
2、LeNet第二層池化層 (subsampling)
28*28*6——14*14*6
做的事情就是降維采樣,即將第一層得到的特征圖像中的大小分成若干份,將這若干份每一份中的參數(shù)特征取一個(gè)平均值,作為這一份的新的參數(shù),這個(gè)過程叫做池化,最后組合成一個(gè)新的特征圖像
問題3:卷積后進(jìn)行后向傳播時(shí)按照正常的BP即可,但是池化后的層進(jìn)行進(jìn)行后向傳播到池化前的層呢?
答:因?yàn)槌鼗倪^程就是將4個(gè)格子取了一個(gè)平均值作為池化后的一個(gè)格子,那當(dāng)我們進(jìn)行后向傳播時(shí),我們將池化后的層的一個(gè)格子的1/4梯度作為池化前的4個(gè)格子的每一個(gè)格子的梯度即可
3、LeNet第三層卷積層 (convolution)
14*14*6——10*10*16
利用和圖像同channel的卷積核去卷積圖像得到的特征圖像的channel=1,這里用了16個(gè)和圖像同channel的卷積核去卷積圖像,因此得到的特征圖像的channel=16,至于為什么是10,可以通過《原始圖像大小、卷積核大小、步長(zhǎng)核特征圖像大小之間的共關(guān)系》來進(jìn)行求得,(14-5)/1 + 1 = 10
?
4、全連接層(full connection)
這一部分按照人工神經(jīng)網(wǎng)絡(luò)去理解就好了
1)全連接層的模型和定義
在全連接前之前還有一層池化層,這里不再贅述,與第一層的池化層原理一樣
全連接層其實(shí)即使常規(guī)的神經(jīng)網(wǎng)絡(luò)層了,和卷積層的區(qū)別就是:
不本質(zhì)區(qū)別:上圖中,并不是所有的輸入神經(jīng)元和下一層的神經(jīng)元都有權(quán)重,即只有部分神經(jīng)元之間進(jìn)行了連線,而常規(guī)的神經(jīng)網(wǎng)絡(luò)是每個(gè)神經(jīng)元之間都有需要連線的即有權(quán)重,但是這個(gè)區(qū)別我們把沒有連線之間神經(jīng)元的權(quán)重看成是0即可,因此此為不本質(zhì)區(qū)別
本質(zhì)區(qū)別:上圖神經(jīng)網(wǎng)絡(luò)的權(quán)重是共享的
說簡(jiǎn)單一點(diǎn)就是:全連接層的相鄰兩層的神經(jīng)元是全部都會(huì)相互連接的,且權(quán)重不會(huì)共享,每一對(duì)神經(jīng)元之間的權(quán)重是獨(dú)立的
2)全連接層的待定參數(shù)
由上圖可知,第一層全連接層的輸入為池化層的輸出,其特征參數(shù)為:5*5*16=400,也就是說全連接層的輸入層的神經(jīng)元個(gè)數(shù)為400個(gè),輸出層神經(jīng)元個(gè)數(shù)為120,則有參數(shù)(400+1)*120個(gè),其中加1是因?yàn)檫€有一個(gè)偏置;
同理·可得第二層全連接層的輸入層即使第一層全連接層的輸出,有神經(jīng)元個(gè)數(shù)120個(gè),輸出層有神經(jīng)元個(gè)數(shù)80,則參數(shù)的個(gè)數(shù)為:(120+1)*84
還有最后一層就是全連接層到輸出層(output),易得參數(shù)個(gè)數(shù)為:(84+1)*10
5、輸出層(OUTPUT)
?????? 這一層主要就是將前面通過卷積、池化、全連接得到的預(yù)測(cè)值輸出,在LeNet卷積神經(jīng)網(wǎng)絡(luò)中,使用的數(shù)據(jù)庫(kù)是Mnist庫(kù),共有10類,因此輸出層為10個(gè)神經(jīng)元。屬于哪一類那么哪一類神經(jīng)元的輸出值為1,其余9個(gè)神經(jīng)元的輸出為0
這樣就回到我們熟悉的人工神經(jīng)網(wǎng)絡(luò)問題上去了!
具體可見:《【機(jī)器學(xué)習(xí)】神經(jīng)網(wǎng)絡(luò)BP理論與python實(shí)例系列》
但是需要注意的是:目標(biāo)函數(shù)發(fā)生了改變
1)目標(biāo)函數(shù)E
交叉熵的方式
問題4:什么是SoftMax?
答:可見文章:《小白都能看懂的softmax詳解》
6、LeNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)計(jì)算
注:計(jì)算速度取決于卷積層(乘法多)——運(yùn)行速度,參數(shù)個(gè)數(shù)取決于全連接層——存儲(chǔ)空間
四、TENSORFLOW實(shí)現(xiàn)LeNet-5
用戶只需要編寫前向計(jì)算就可以,后向傳播是tensorflow包自動(dòng)計(jì)算的,并且tensorflow的數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)的描述是分開的,先是對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行描述,然后再將數(shù)據(jù)參數(shù)帶入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練測(cè)試等。
?
?
總結(jié)
以上是生活随笔為你收集整理的机器学习——深度学习之卷积神经网络(CNN)——LeNet卷积神经网络结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: access 江苏计算机二级_关于江苏省
- 下一篇: 面向对象三大特性: 封装