您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“CNN中網絡GoogLeNet的相關知識有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“CNN中網絡GoogLeNet的相關知識有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
GoogLeNet網絡是由Christian Szegedy在Google Research中發展起來的,該網絡贏得2014年ILSVRC的冠軍,成功的把top-5的錯誤率降到了7%,很大一個原因就是因為這個網絡比之前介紹的CNN有更深的層。雖然層數更深,但是權重參數卻是更少,比前面學的AlexNet網絡要少上10倍。為什么呢?
一. Inception Module
那是因為該網絡中有很大一部分的子網絡是由如下圖的Inception Module組成,我們來看一下下面的這個Inception Module:
其中表示“3x3+1(S)”表示該層的卷積核大小為3x3,stride為1,S means SAME padding。從上面的網絡可以看出,首先輸入信號被copy并輸入到四個不同的層中,所有的卷積層都用ReLU激活函數。注意到上面的卷積層用的分別用1x1, 3x3, 5x5的卷積核,這樣有助于捕捉到不同尺度的pattern。還有每個層都用了SAME padding,這就意味著,輸入圖像的寬高和輸出的寬高是一致的,這就能夠使得最終的Depth Concat能夠實現(不同size的圖像無法疊加)。在TensorFlow中,Depth Concat的實現是由concat()函數實現的,將其中的參數axis設為3.
我們可能已經發現,為什么會有一些卷積核的size是1x1呢?由于只有一顆像素,所以這些卷積層其實是無法獲取任何特征的。事實上,這種層有兩個目的:
首先就是降維,這些層的作用是使得輸出的深度比輸入的低,所以又稱為瓶頸層,這樣就達到一個降維的目的。這個效果在3x3和5x5的卷積層之前就特別有效,大大降低了訓練權重的數量。
還有就是每一對([1x1,3x3]和[1x1,5x5])的卷積層,像一個強大的卷積層,能夠捕獲更為復雜的pattern.事實上確實如此,一個單層的卷積層就像是一個簡單的線性分類器滑過圖像,而該組合相當于是兩層神經網絡滑過圖像。
每一個卷積層中卷積核的數量都是一個超參數,這就意味著一個Inception Module就有6個超參數需要調節。
二. GoogLeNet 構成
來我們一起看下GoogLeNet的構成,如下圖。圖中包含有9個inception module(圖中帶有螺旋形的標識)。inception module上的6個數字分別對應上圖中每一個卷積層的輸出個數。并且圖中所有的卷積層都使用ReLU激活函數。
我們來一起看下這個網絡:
為了降低計算負載,前兩層的stride=2,意味著將圖像的寬高分別除以4,面積縮小到之前的1/16。
為了使前面的層能夠學到更多的特征,接著用了局部響應正則化(上期一起學過的)。
再接下來就是兩個卷積層,類似一個瓶頸層,可以看做是一個智能卷積層。
下面又是一個局部響應正則化的層,來保證能夠學到更多的特征。
接著用一個stride為2的最大值池化層來降低計算負載。
接著就是9個inception module,中間插了兩個最大值池化層,來降維加速 。
接下來用了一個均值池化層,并且VALID padding。輸出圖像的size為1x1,這種策略稱為全局均值池化。該策略能夠很好的強迫之前的層輸出更為有效的特征,因為其他特征將會被均值被過濾掉。這樣就使得后面的全連接層比較少,沒有必要像AlexNet那樣有好幾個全連接層。
最后就不說了,一個Dropout正則化,一個全連接層和softmax激活函數來獲取輸出結果。
上面的這個圖相對來說更簡單一些,原始的GoogLeNet在第三個和第六個inception module頂端還包含了兩個輔助的分類器,他們都是由一個均值池化層,一個卷積層,兩個全連接層和一個softmax激活層組成。在訓練期間,他們損失的70%被加到網絡整體損失中,這樣做是為了防止梯度消失,并且正則化網絡。然而,效果卻相對較小。
讀到這里,這篇“CNN中網絡GoogLeNet的相關知識有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。