摘要:是一個深度學習包,里面含有很多機器學習算法,如卷積神經網絡,深度信念網絡,自動編碼堆棧,卷積的作者是。對于每個卷積輸出,表示該層的一個輸出,所對應的所有卷積核,包含的神經元的總數。
deepLearnToolbox-master是一個深度學習matlab包,里面含有很多機器學習算法,如卷積神經網絡CNN,深度信念網絡DBN,自動編碼AutoEncoder(堆棧SAE,卷積CAE)的作者是 RasmusBerg Palm。
今天給介紹deepLearnToolbox-master中的CNN部分。
DeepLearnToolbox-master中CNN內的函數:
調用關系為:
該模型使用了mnist的數字mnist_uint8.mat作為訓練樣本,作為cnn的一個使用樣例,每個樣本特征為一個28*28=的向量。
網絡結構為:
讓我們來分析各個函數:
一、Test_example_CNN
三、cnntrain.m.
四、cnnff.m.
五、cnnbp.m.
五、cnnapplygrads.m.
六、cnntest.m.
?
一、Test_example_CNN:
1設置CNN的基本參數規格,如卷積、降采樣層的數量,卷積核的大小、降采樣的降幅
2 cnnsetup函數 初始化卷積核、偏置等
3 cnntrain函數 訓練cnn,把訓練數據分成batch,然后調用
3.1 ?cnnff 完成訓練的前向過程,
3.2 ?cnnbp計算并傳遞神經網絡的error,并計算梯度(權重的修改量)
3.3 ?cnnapplygrads 把計算出來的梯度加到原始模型上去
4 cnntest函數,測試當前模型的準確率
該模型采用的數據為mnist_uint8.mat,
含有70000個手寫數字樣本其中60000作為訓練樣本,10000作為測試樣本。
把數據轉成相應的格式,并歸一化。
二、Cnnsetup.m
該函數你用于初始化CNN的參數。
設置各層的mapsize大小,
初始化卷積層的卷積核、bias
尾部單層感知機的參數設置
bias統一設置為0
權重設置為:-1~1之間的隨機數/sqrt(6/(輸入神經元數量+輸出神經元數量))
對于卷積核權重,輸入輸出為fan_in, fan_out
fan_out= net.layers{l}.outputmaps * net.layers{l}.kernelsize ^ 2;
%卷積核初始化,1層卷積為1*6個卷積核,2層卷積一共6*12=72個卷積核。對于每個卷積輸出featuremap,?
%fan_in= 表示該層的一個輸出map,所對應的所有卷積核,包含的神經元的總數。1*25,6*25
fan_in =numInputmaps * net.layers{l}.kernelsize ^ 2;
fin=1*25 ? ? ?or ? 6*25
fout=1*6*25 ? ?or ? 6*12*25
net.layers{l}.k{i}{j} =(rand(net.layers{l}.kernelsize) - 0.5) * 2 * sqrt(6 / (fan_in + fan_out));
1、卷積降采樣的參數初始化
2、尾部單層感知機的參數(權重和偏量)設置:
三、cnntrain.m
該函數用于訓練CNN。
生成隨機序列,每次選取一個batch(50)個樣本進行訓練。
批訓練:計算50個隨機樣本的梯度,求和之后一次性更新到模型權重中。
在批訓練過程中調用:
Cnnff.m 完成前向過程
Cnnbp.m 完成誤差傳導和梯度計算過程
Cnnapplygrads.m把計算出來的梯度加到原始模型上去
四、cnnff.m
3、尾部單層感知機的數據處理,需要把subFeatureMap2連接成為一個(4*4)*12=192的向量,但是由于采用了50樣本批訓練的方法,subFeatureMap2被拼合成為一個192*50的特征向量fv;
Fv作為單層感知機的輸入,全連接的方式得到輸出層
五、cnnbp.m
該函數實現2部分功能,計算并傳遞誤差,計算梯度
3、把單層感知機的輸入層featureVector的誤差矩陣,恢復為subFeatureMap2的4*4二維矩陣形式
插播一張圖片:
4、誤差在特征提取網絡【卷積降采樣層】的傳播
如果本層是卷積層,它的誤差是從后一層(降采樣層)傳過來,誤差傳播實際上是用降采樣的反向過程,也就是降采樣層的誤差復制為2*2=4份。卷積層的輸入是經過sigmoid處理的,所以,從降采樣層擴充來的誤差要經過sigmoid求導處理。
如果本層是降采樣層,他的誤差是從后一層(卷積層)傳過來,誤差傳播實際是用卷積的反向過程,也就是卷積層的誤差,反卷積(卷積核轉180度)卷積層的誤差,原理參看插圖。
5、計算特征抽取層和尾部單層感知機的梯度
五、cnnapplygrads.m
該函數完成權重修改,更新模型的功能
1更新特征抽取層的權重 weight+bias
2 更新末尾單層感知機的權重 weight+bias
六、cnntest.m
驗證測試樣本的準確率
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4403.html
摘要:本報告面向的讀者是想要進入機器學習領域的學生和正在尋找新框架的專家。其輸入需要重塑為包含個元素的一維向量以滿足神經網絡。卷積神經網絡目前代表著用于圖像分類任務的較先進算法,并構成了深度學習中的主要架構。 初學者在學習神經網絡的時候往往會有不知道從何處入手的困難,甚至可能不知道選擇什么工具入手才合適。近日,來自意大利的四位研究者發布了一篇題為《神經網絡初學者:在 MATLAB、Torch 和 ...
摘要:下圖總結了絕大多數上的開源深度學習框架項目,根據項目在的數量來評級,數據采集于年月初。然而,近期宣布將轉向作為其推薦深度學習框架因為它支持移動設備開發。該框架可以出色完成圖像識別,欺詐檢測和自然語言處理任務。 很多神經網絡框架已開源多年,支持機器學習和人工智能的專有解決方案也有很多。多年以來,開發人員在Github上發布了一系列的可以支持圖像、手寫字、視頻、語音識別、自然語言處理、物體檢測的...
摘要:陳建平說訓練是十分重要的,尤其是對關注算法本身的研究者。代碼生成其實在中也十分簡單,陳建平不僅利用車道線識別模型向我們演示了如何使用生成高效的代碼,同時還展示了在脫離環境下運行代碼進行推斷的效果。 近日,Mathworks 推出了包含 MATLAB 和 Simulink 產品系列的 Release 2017b(R2017b),該版本大大加強了 MATLAB 對深度學習的支持,并簡化了工程師、...
閱讀 2208·2021-11-22 15:29
閱讀 4098·2021-11-04 16:13
閱讀 991·2019-08-29 16:58
閱讀 338·2019-08-29 16:08
閱讀 1455·2019-08-23 17:56
閱讀 2378·2019-08-23 17:06
閱讀 3165·2019-08-23 16:55
閱讀 2057·2019-08-23 16:22