平臺網(wǎng)站怎么做的購物網(wǎng)站大全
文章目錄
12.3.5 Caffe有哪些接口
12.4 網(wǎng)絡(luò)搭建有什么原則
12.4.1 新手原則
12.4.2 深度優(yōu)先原則
12.4.3 卷積核size一般為奇數(shù)
12.4.4 卷積核不是越大越好
12.5 有哪些經(jīng)典的網(wǎng)絡(luò)模型值得我們?nèi)W(xué)習(xí)的
12.6 網(wǎng)絡(luò)訓(xùn)練有哪些技巧
12.6.1 合適的數(shù)據(jù)集
12.6.2 合適的預(yù)處理方法
12.6.3 網(wǎng)絡(luò)的初始化
12.6.4 小規(guī)模數(shù)據(jù)訓(xùn)練
12.6.5 設(shè)置合理Learning Rate
12.6.6 損失函數(shù)
12.3.5 Caffe有哪些接口
Caffe深度學(xué)習(xí)框架支持多種編程接口,包括命令行、Python和Matlab,下面將介紹如何使用這些接口。
1. Caffe Python接口
Caffe提供 Python 接口,即Pycaffe,具體實現(xiàn)在caffe、python文件夾內(nèi)。在Python代碼中import caffe,可以load models(導(dǎo)入模型)、forward and backward (前向、反向迭代)、handle IO(數(shù)據(jù)輸入輸出)、visualize networks(繪制net)和instrument model solving(自定義優(yōu)化方法)。所有的模型數(shù)據(jù)、計算參數(shù)都是暴露在外、可供讀寫的。 ??
(1)caffe.Net 是主要接口,負(fù)責(zé)導(dǎo)入數(shù)據(jù)、校驗數(shù)據(jù)、計算模型。 ??
(2)caffe.Classsifier 用于圖像分類。 ??
(3)caffe.Detector 用于圖像檢測。 ??
(4)caffe.SGDSolver 是露在外的 solver 的接口。 ??
(5)caffe.io 處理輸入輸出,數(shù)據(jù)預(yù)處理。 ??
(6)caffe.draw 可視化 net 的結(jié)構(gòu)。 ??
(7)caffe blobs 以 numpy ndarrys 的形式表示,方便而且高效。
2. Caffe MATLAB接口
MATLAB接口(Matcaffe)在 caffe/matlab 目錄的 caffe 軟件包。在 matcaffe 的基礎(chǔ)上,可將Caffe整合到MATLAB代碼中。 ??
MATLAB接口包括:
(1)MATLAB 中創(chuàng)建多個網(wǎng)絡(luò)結(jié)構(gòu)。 ??
(2)網(wǎng)絡(luò)的前向傳播(Forward)與反向傳播(Backward)計算。 ??
(3)網(wǎng)絡(luò)中的任意一層以及參數(shù)的存取。 ??
(4)網(wǎng)絡(luò)參數(shù)保存至文件或從文件夾加載。 ??
(5)blob 和 network 形狀調(diào)整。 ??
(6)網(wǎng)絡(luò)參數(shù)編輯和調(diào)整。 ??
(7)創(chuàng)建多個 solvers 進行訓(xùn)練。 ??
(8)從solver 快照(Snapshots)恢復(fù)并繼續(xù)訓(xùn)練。 ??
(9)訪問訓(xùn)練網(wǎng)絡(luò)(Train nets)和測試網(wǎng)絡(luò)(Test nets)。 ??
(10)迭代后網(wǎng)絡(luò)交由 MATLAB 控制。 ??
(11)MATLAB代碼融合梯度算法。
3. Caffe命令行接口
命令行接口 Cmdcaffe 是 Caffe 中用來訓(xùn)練模型、計算得分以及方法判斷的工具。Cmdcaffe 存放在 caffe/build/tools 目錄下。
caffe train
caffe train 命令用于模型學(xué)習(xí),具體包括: ??
(1)caffe train 帶 solver.prototxt 參數(shù)完成配置。 ??
(2)caffe train 帶 snapshot mode_iter_1000.solverstate 參數(shù)加載 solver snapshot。 ??
(3)caffe train 帶 weights 參數(shù) model.caffemodel 完成 Fine-tuning 模型初始化。
caffe test
caffe test 命令用于測試運行模型的得分,并且用百分比表示網(wǎng)絡(luò)輸出的最終結(jié)果,比如 accuracyhuoloss 作為其結(jié)果。測試過程中,顯示每個 batch 的得分,最后輸出全部 batch 的平均得分值。
caffe time
caffe time 命令用來檢測系統(tǒng)性能和測量模型相對執(zhí)行時間,此命令通過逐層計時與同步,執(zhí)行模型檢測。
參考文獻: 1.深度學(xué)習(xí):Caffe之經(jīng)典模型講解與實戰(zhàn)/ 樂毅,王斌
12.4 網(wǎng)絡(luò)搭建有什么原則
12.4.1 新手原則
剛?cè)腴T的新手不建議直接上來就開始搭建網(wǎng)絡(luò)模型。比較建議的學(xué)習(xí)順序如下:
- 1.了解神經(jīng)網(wǎng)絡(luò)工作原理,熟悉基本概念及術(shù)語。
- 2.閱讀經(jīng)典網(wǎng)絡(luò)模型論文+實現(xiàn)源碼(深度學(xué)習(xí)框架視自己情況而定)。
- 3.找數(shù)據(jù)集動手跑一個網(wǎng)絡(luò),可以嘗試更改已有的網(wǎng)絡(luò)模型結(jié)構(gòu)。
- 4.根據(jù)自己的項目需要設(shè)計網(wǎng)絡(luò)。
12.4.2 深度優(yōu)先原則
通常增加網(wǎng)絡(luò)深度可以提高準(zhǔn)確率,但同時會犧牲一些速度和內(nèi)存。但深度不是盲目堆起來的,一定要在淺層網(wǎng)絡(luò)有一定效果的基礎(chǔ)上,增加深度。深度增加是為了增加模型的準(zhǔn)確率,如果淺層都學(xué)不到東西,深了也沒效果。
12.4.3 卷積核size一般為奇數(shù)
卷積核為奇數(shù)有以下好處:
- 1 保證錨點剛好在中間,方便以 central pixel為標(biāo)準(zhǔn)進行滑動卷積,避免了位置信息發(fā)生偏移 。
- 2 保證在填充(Padding)時,在圖像之間添加額外的零層,圖像的兩邊仍然對稱。
12.4.4 卷積核不是越大越好
AlexNet中用到了一些非常大的卷積核,比如11×11、5×5卷積核,之前人們的觀念是,卷積核越大,感受野越大,看到的圖片信息越多,因此獲得的特征越好。但是大的卷積核會導(dǎo)致計算量的暴增,不利于模型深度的增加,計算性能也會降低。于是在VGG、Inception網(wǎng)絡(luò)中,利用2個3×3卷積核的組合比1個5×5卷積核的效果更佳,同時參數(shù)量(3×3×2+1=19<26=5×5×1+1)被降低,因此后來3×3卷積核被廣泛應(yīng)用在各種模型中。
12.5 有哪些經(jīng)典的網(wǎng)絡(luò)模型值得我們?nèi)W(xué)習(xí)的
提起經(jīng)典的網(wǎng)絡(luò)模型就不得不提起計算機視覺領(lǐng)域的經(jīng)典比賽:ILSVRC .其全稱是 ImageNet Large Scale Visual Recognition Challenge.正是因為ILSVRC 2012挑戰(zhàn)賽上的AlexNet橫空出世,使得全球范圍內(nèi)掀起了一波深度學(xué)習(xí)熱潮。這一年也被稱作“深度學(xué)習(xí)元年”。而在歷年ILSVRC比賽中每次刷新比賽記錄的那些神經(jīng)網(wǎng)絡(luò)也成為了人們心中的經(jīng)典,成為學(xué)術(shù)界與工業(yè)屆競相學(xué)習(xí)與復(fù)現(xiàn)的對象,并在此基礎(chǔ)上展開新的研究。
序號 | 年份 | 網(wǎng)絡(luò)名稱 | 獲得榮譽 |
---|---|---|---|
1 | 2012 | AlexNet | ILSVRC圖像分類冠軍 |
2 | 2014 | VGGNet | ILSVRC圖像分類亞軍 |
3 | 2014 | GoogLeNet | ILSVRC圖像分類冠軍 |
4 | 2015 | ResNet | ILSVRC圖像分類冠軍 |
5 | 2017 | SeNet | ILSVRC圖像分類冠軍 |
1.? AlexNet
- 論文:ImageNet Classification with Deep Convolutional Neural Networks?
- 代碼實現(xiàn):tensorflow?
- 主要特點:
1.第一次使用非線性激活函數(shù)ReLU。
2.增加防加過擬合方法:Droupout層,提升了模型魯棒性。
3.首次使用數(shù)據(jù)增強。
4.首次使用GPU加速運算。
2. VGGNet
- 論文:Very Deep Convolutional Networks for Large-Scale Image Recognition?
- 代碼實現(xiàn):tensorflow?
- 主要特點:
1.網(wǎng)絡(luò)結(jié)構(gòu)更深。
2.普遍使用小卷積核。
3. GoogLeNet
- 論文:Going Deeper with Convolutions?
- 代碼實現(xiàn):tensorflow?
- 主要特點:
1.增強卷積模塊功能。 主要的創(chuàng)新在于他的Inception,這是一種網(wǎng)中網(wǎng)(Network In Network)的結(jié)構(gòu),即原來的結(jié)點也是一個網(wǎng)絡(luò)。Inception一直在不斷發(fā)展,目前已經(jīng)V2、V3、V4。其中1*1卷積主要用來降維,用了Inception之后整個網(wǎng)絡(luò)結(jié)構(gòu)的寬度和深度都可擴大,能夠帶來2-3倍的性能提升。
2.連續(xù)小卷積代替大卷積,保證感受野不變的同時,減少了參數(shù)數(shù)目。
4. ResNet
- 論文:Deep Residual Learning for Image Recognition?
- 代碼實現(xiàn):tensorflow?
- 主要特點:
解決了“退化”問題,即當(dāng)模型的層次加深時,錯誤率卻提高了。
5. SeNet
- 論文:Squeeze-and-Excitation Networks?
- 代碼實現(xiàn):tensorflow?
- 主要特點:
提出了feature recalibration,通過引入 attention 重新加權(quán),可以得到抑制無效特征,提升有效特征的權(quán)重,并很容易地和現(xiàn)有網(wǎng)絡(luò)結(jié)合,提升現(xiàn)有網(wǎng)絡(luò)性能,而計算量不會增加太多。
CV領(lǐng)域網(wǎng)絡(luò)結(jié)構(gòu)演進歷程:
ILSVRC挑戰(zhàn)賽歷年冠軍:
此后,ILSVRC挑戰(zhàn)賽的名次一直是衡量一個研究機構(gòu)或企業(yè)技術(shù)水平的重要標(biāo)尺。 ILSVRC 2017 已是最后一屆舉辦.2018年起,將由WebVision競賽(Challenge on Visual Understanding by Learning from Web Data)來接棒。因此,即使ILSVRC挑戰(zhàn)賽停辦了,但其對深度學(xué)習(xí)的深遠(yuǎn)影響和巨大貢獻,將永載史冊。
12.6 網(wǎng)絡(luò)訓(xùn)練有哪些技巧
12.6.1 合適的數(shù)據(jù)集
1 沒有明顯臟數(shù)據(jù)(可以極大避免Loss輸出為NaN)。
2 樣本數(shù)據(jù)分布均勻。
12.6.2 合適的預(yù)處理方法
關(guān)于數(shù)據(jù)預(yù)處理,在Batch Normalization未出現(xiàn)之前預(yù)處理的主要做法是減去均值,然后除去方差。在Batch Normalization出現(xiàn)之后,減均值除方差的做法已經(jīng)沒有必要了。對應(yīng)的預(yù)處理方法主要是數(shù)據(jù)篩查、數(shù)據(jù)增強等。
12.6.3 網(wǎng)絡(luò)的初始化
網(wǎng)絡(luò)初始化最粗暴的做法是參數(shù)賦值為全0,這是絕對不可取的。因為如果所有的參數(shù)都是0,那么所有神經(jīng)元的輸出都將是相同的,那在back propagation的時候同一層內(nèi)所有神經(jīng)元的行為也是相同的,這可能會直接導(dǎo)致模型失效,無法收斂。吳恩達(dá)視頻中介紹的方法是將網(wǎng)絡(luò)權(quán)重初始化均值為0、方差為1符合的正態(tài)分布的隨機數(shù)據(jù)。
12.6.4 小規(guī)模數(shù)據(jù)訓(xùn)練
在正式開始訓(xùn)練之前,可以先用小規(guī)模數(shù)據(jù)進行試練。原因如下:
- 1 可以驗證自己的訓(xùn)練流程對否。
- 2 可以觀察收斂速度,幫助調(diào)整學(xué)習(xí)速率。
- 3 查看GPU顯存占用情況,最大化batch_size(前提是進行了batch normalization,只要顯卡不爆,盡量挑大的)。
12.6.5 設(shè)置合理Learning Rate
- 1 太大。Loss爆炸、輸出NaN等。
- 2 太小。收斂速度過慢,訓(xùn)練時長大大延長。
- 3 可變的學(xué)習(xí)速率。比如當(dāng)輸出準(zhǔn)確率到達(dá)某個閾值后,可以讓Learning Rate減半繼續(xù)訓(xùn)練。
12.6.6 損失函數(shù)
損失函數(shù)主要分為兩大類:分類損失和回歸損失:
1. 回歸損失:
- 均方誤差(MSE 二次損失 L2損失) 它是我們的目標(biāo)變量與預(yù)測值變量差值平方。
- 平均絕對誤差(MAE L1損失) 它是我們的目標(biāo)變量與預(yù)測值變量差值絕對值。 關(guān)于MSE與MAE的比較。MSE更容易解決問題,但是MAE對于異常值更加魯棒。更多關(guān)于MAE和MSE的性能,可以參考L1vs.L2 Loss Function
2.分類損失:
- 交叉熵?fù)p失函數(shù)。 是目前神經(jīng)網(wǎng)絡(luò)中最常用的分類目標(biāo)損失函數(shù)。
- 合頁損失函數(shù) 合頁損失函數(shù)廣泛在支持向量機中使用,有時也會在損失函數(shù)中使用。缺點:合頁損失函數(shù)是對錯誤越大的樣本施以更嚴(yán)重的懲罰,但是這樣會導(dǎo)致?lián)p失函數(shù)對噪聲敏感。