【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型
1 ResNet模型
?在深度學習領域中,模型越深意味著擬合能力越強,出現過擬合問題是正常的,訓練誤差越來越大卻是不正常的。
1.1 訓練誤差越來越大的原因
在反向傳播中,每一層的梯度都是在上一層的基礎上計算的。隨著層數越來越多,梯度在多層傳播時會越來越小,直到梯度消失,于是隨著層數越來越多,訓練誤差會越來越大。
ResNet模型的動機是要解決網絡層次比較深時無法訓練的問題,借鑒了高速網絡模型的思想,設計出了一個殘差連接模塊。這種模塊可以讓模型的深度達到152層。
1.2 殘差連接的結構
在標準的前饋卷積神經網絡上,加一個直接連接,繞過中間層的連接方式,使得輸入可以直達輸出。
1.2.1 殘差連接的結構圖
1.2.2 殘差連接的定義描述
?1.3? 殘差連接的原理
殘差連接通過將原始的輸入繞過中間的變化直接傳給Addiion,在反向傳播的過程中,誤差傳到輸入層時會得到兩個誤差的加和,一個是左側的多層網絡誤差,一個是右側的原始誤差。左側會隨著層數變多而梯度越來越小,右側則是由Addition直接連到輸入層,所以還會保留Addition的梯度。這樣輸入層得到的加和后的梯度就沒有那么小了,可以保證接著將誤差往下傳。
1.3.1?殘差連接的原理
這種方式看似解決了梯度越傳越小的問題,但是殘差連接在正向同樣也起到作用。
由于正向的作用,網絡結構是并行的模型,即殘差連接的作用是將網絡串行改成并行。
這就是lnception V4模型結合殘差網絡的原理,沒有使用殘差連接,反而實現了與Inception-ResNet V2模型等同的效果的原因。
2 DenSeNet模型
DenseNet模型于2017年被提出,該模型是密集連接的卷積神經網絡CNN,每個網絡層都會接受前面所有層作為其輸入,也就是說網絡每一層的輸入都是前面所有層輸出的并集。
2.1?DenSeNet模型的網絡結構
2.1.1?DenSeNet模型
每一個特征圖都與前面所有層的特征圖相連,即每一層都會接受前面所有層作為其輸入。對于一個L層的網絡,DenseNet模型共包含L(L+1)2個連接。
2.1.2??DenSeNet模型圖
2.2?DenseNet模型的優勢
2.3?DenseNet模型的缺陷
DenseNet模型可能耗費很多GPU顯存,一般顯卡無法存放更深的DenseNet模型,需要經過精心優化。
2.4 稠密快
稠密塊是DenseNet模型中的特有結構。
2.4.1?稠密塊的組成
稠密塊中含有兩個卷積層,這兩個卷積層的卷積核尺寸各不相同(分別為1×1和3×3)。每一個稠密塊由L個全連接層組成。
全連接僅在一個稠密塊中,不同稠密塊之間是沒有全連接的,即全連接只發生在稠密塊中。
3 EffcientNet模型
MnasNet模型是谷歌團隊提出的一種資源約束的終端CNN模型的自動神經結構搜索方法。該方法使用強化學習的思路進行實現。
3.1?EffcientNet模型的步驟
1、使用強化學習算法實現的MnasNet模型生成基準模型EfficientNet-B0。
2、采用復合縮放的方法,在預先設定的內存和計算量大小的限制條件下,對EfficientNet-BO模型的深度、寬度(特征圖的通道數)、圖片尺寸這3個維度同時進行縮放這3個維度的縮放比例由網格搜索得到,最終輸出了EfficientNet模型。
3.2 EffcientNet模型的調參示意圖
- 圖1-12(a)是基準模型。
- 圖1-12(b)是在基準模型的基礎上進行寬度縮放,即增加圖片的通道數量。
- 圖1-12(c)是在基準模型的基礎上進行深度縮放,即增加網絡的層數。
- 圖1-12(d)是在基準模型的基礎上對圖片尺寸進行縮放。
- 圖1-12(e)是在基準模型的基礎上對圖片的深度、寬度、尺寸同時進行縮放。
3.3 EfficientNet模型的效果
在ImageNet數據集上Top-1準確率達到84.4%,Top-5準確率達到97.1%,但是其大小僅僅為已知最好深度卷積模型的1/8.4,而且速度比已知最好深度卷積模型快6.1倍。
EfcientNet模型滿足了在不降低模型準確率的條件下,減少模型的計算量或內存需求(參見arXⅳ網站上編號為“1905.11946”的論文)。
3.4?MBConv卷積塊
EficientNet模型的內部是通過多個MBConv卷積塊實現。
3.4.1?MBConv卷積塊特點
MBConv卷積塊使用類似殘差連接的結構,不同的是在短連接部分使用了SE模塊,并且將常用的ReLU激活函數換成了Swish激活函數,還使用DropConnect層來代替傳統的Dropout層。
3.4.2 MBConv卷積塊的結構
3.4.3? Tip
在SE模塊中沒有使用BN操作,而且其中的Sigmoid激活函數也沒有被Swish激活函數替換。
3.5?DropConnect
在深度神經網絡中,DropConnect層與Dropout層的作用都是防止模型產生過擬合的情況。DropConnect層的效果會更好一些。
3.5.1?DropConnect層與Dropout層對比
DropConnect層:在訓練神經網絡模型的過程中,對隱藏層節點的輸入進行隨機的丟棄。
Dropout層:在訓練神經網絡模型的過程中,對隱藏層節點的輸出進行隨機的丟棄
3.5.2??DropConnect層與Dropout層結構圖
? ?
總結
以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vb 根据pid获取句柄_C++中避免返
- 下一篇: 【Pytorch神经网络实战案例】26