卷積神經(jīng)網(wǎng)絡(luò)CNN代碼解析_第1頁
卷積神經(jīng)網(wǎng)絡(luò)CNN代碼解析_第2頁
卷積神經(jīng)網(wǎng)絡(luò)CNN代碼解析_第3頁
卷積神經(jīng)網(wǎng)絡(luò)CNN代碼解析_第4頁
卷積神經(jīng)網(wǎng)絡(luò)CNN代碼解析_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 卷積神經(jīng)網(wǎng)絡(luò)CNN代碼解析 deepLearnToolbox-master是一個深度學(xué)習(xí)matlab包,里面含有很多機器學(xué)習(xí)算法,如卷積神經(jīng)網(wǎng)絡(luò)CNN,深度信念網(wǎng)絡(luò)DBN,自動編碼AutoEncoder(堆棧SAE,卷積CAE)的作者是 Rasmus Berg Palm (rasmusbergpalm)代碼下載:這里我們介紹deepLearnToolbox-master中的CNN部分。DeepLearnToolbox-master中CNN內(nèi)的 函數(shù):調(diào)用關(guān)系為:該模型使用了mnist的數(shù)字mnist_uint8.mat作為訓(xùn)練樣本,作為cnn的一個使用樣例,每個樣本特征為一個28*28=的向

2、量。網(wǎng)絡(luò)結(jié)構(gòu)為:讓我們來看看各個函數(shù):一、Test_example_CNN:2三、cnntrain.m5四、cnnff.m6五、cnnbp.m7五、cnnapplygrads.m10六、cnntest.m111、 Test_example_CNN:Test_example_CNN:1設(shè)置CNN的基本參數(shù)規(guī)格,如卷積、降采樣層的數(shù)量,卷積核的大小、降采樣的降幅2 cnnsetup函數(shù) 初始化卷積核、偏置等3 cnntrain函數(shù) 訓(xùn)練cnn,把訓(xùn)練數(shù)據(jù)分成batch,然后調(diào)用3.1 cnnff 完成訓(xùn)練的前向過程,3.2 cnnbp計算并傳遞神經(jīng)網(wǎng)絡(luò)的error,并計算梯度(權(quán)重的修改量)3.3

3、 cnnapplygrads 把計算出來的梯度加到原始模型上去4 cnntest 函數(shù),測試當(dāng)前模型的準(zhǔn)確率該模型采用的數(shù)據(jù)為mnist_uint8.mat,含有70000個手寫數(shù)字樣本其中60000作為訓(xùn)練樣本,10000作為測試樣本。把數(shù)據(jù)轉(zhuǎn)成相應(yīng)的格式,并歸一化。設(shè)置網(wǎng)絡(luò)結(jié)構(gòu)及訓(xùn)練參數(shù)初始化網(wǎng)絡(luò),對數(shù)據(jù)進行批訓(xùn)練,驗證模型準(zhǔn)確率繪制均方誤差曲線二、Cnnsetup.m該函數(shù)你用于初始化CNN的參數(shù)。設(shè)置各層的mapsize大小,初始化卷積層的卷積核、bias尾部單層感知機的參數(shù)設(shè)置* bias統(tǒng)一設(shè)置為0權(quán)重設(shè)置為:-11之間的隨機數(shù)/sqrt(6/(輸入神經(jīng)元數(shù)量+輸出神經(jīng)元數(shù)量)對于

4、卷積核權(quán)重,輸入輸出為fan_in, fan_outfan_out = net.layersl.outputmaps * net.layersl.kernelsize 2;%卷積核初始化,1層卷積為1*6個卷積核,2層卷積一共6*12=72個卷積核。對于每個卷積輸出featuremap, %fan_in = 表示該層的一個輸出map,所對應(yīng)的所有卷積核,包含的神經(jīng)元的總數(shù)。1*25,6*25fan_in = numInputmaps * net.layersl.kernelsize 2;fin =1*25 or 6*25fout=1*6*25 or 6*12*25 net.layersl.ki

5、j = (rand(net.layersl.kernelsize) - 0.5) * 2 * sqrt(6 / (fan_in + fan_out);1 卷積降采樣的參數(shù)初始化2尾部單層感知機的參數(shù)(權(quán)重和偏量)設(shè)置:三、cnntrain.m該函數(shù)用于訓(xùn)練CNN。生成隨機序列,每次選取一個batch(50)個樣本進行訓(xùn)練。批訓(xùn)練:計算50個隨機樣本的梯度,求和之后一次性更新到模型權(quán)重中。在批訓(xùn)練過程中調(diào)用:Cnnff.m 完成前向過程Cnnbp.m 完成誤差傳導(dǎo)和梯度計算過程Cnnapplygrads.m 把計算出來的梯度加到原始模型上去四、cnnff.m1、取得CNN的輸入2、兩次卷積核降采

6、樣層處理3、尾部單層感知機的數(shù)據(jù)處理,需要把subFeatureMap2連接成為一個(4*4)*12=192的向量,但是由于采用了50樣本批訓(xùn)練的方法,subFeatureMap2被拼合成為一個192*50的特征向量fv;Fv作為單層感知機的輸入,全連接的方式得到輸出層五、cnnbp.m該函數(shù)實現(xiàn)2部分功能,計算并傳遞誤差,計算梯度1、計算誤差和LossFunction2、 計算尾部單層感知機的誤差3、 把單層感知機的輸入層featureVector的誤差矩陣,恢復(fù)為subFeatureMap2的4*4二維矩陣形式插播一張圖片:4、 誤差在特征提取網(wǎng)絡(luò)【卷積降采樣層】的傳播如果本層是卷積層,它的誤差是從后一層(降采樣層)傳過來,誤差傳播實際上是用降采樣的反向過程,也就是降采樣層的誤差復(fù)制為2*2=4份。卷積層的輸入是經(jīng)過sigmoid處理的,所以,從降采樣層擴充來的誤差要經(jīng)過sigmoid求導(dǎo)處理。如果本層是降采樣層,他的誤差是從后一層(卷積層)傳過來,誤差傳播實際是用卷積的反向過程,也就是卷積層的誤差,反卷積(卷積核轉(zhuǎn)180度)卷積層的誤差,原理參看插圖。5、 計算特征抽取層和尾部單層感知機的梯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論