1. 程式人生 > >ROIPooling的意義?全連線層輸入需要固定尺度?全連線層的實現?為什麼需要兩個全連線層?

ROIPooling的意義?全連線層輸入需要固定尺度?全連線層的實現?為什麼需要兩個全連線層?

ROIPooling的作用,就是resize到統一尺寸,這樣才能利用預訓練的全連線層引數,大多是7*7大小,

這是因為全連結層需要固定的輸入尺寸.那麼為什麼需要固定尺寸呢?


全連線層的計算其實相當於輸入的特徵圖資料矩陣和全連線層權值矩陣進行內積

以vgg16,512*7*7的特徵輸入為例,緊接著兩個全連線層。

如果是caffe,這個特徵圖進入全連線層之後就會被flatten成一個25088維的向量,同時這個全連線層會初始化一個25088*4096的權值矩陣,這兩個進行矩陣乘積運算,最後輸出一個4096的一維向量。

[1,512*7*7] * [512*7*7,4096]=[1,4096](你看這裡就知道為什麼要固定7*7了,後面

全連線層的引數維度是固定的)

 

換言之:全連線的引數是隨前層大小的變化而變的,如果輸入圖片大小不一樣,那麼全連線層之前的feature map也不一樣,那全連線層的引數數量就不能確定, 所以必須實現固定輸入影象的大小。


多個全連線層相接,是因為新增非線性。一個全連線層中一個神經元相當於一個多項式。

如果全連線層寬度不變,增加長度:

優點:神經元個數增加,模型複雜度提升;全連線層數加深,模型非線性表達能力提高。理論上都可以提高模型的學習能力。

如果全連線層長度不變,增加寬度:

優點:神經元個數增加,模型複雜度提升。理論上可以提高模型的學習能力。

難度長度和寬度都是越多越好?

肯定不是

(1)缺點:學習能力太好容易造成過擬合。

(2)缺點:運算時間增加,效率變低。


拓展:

作者:魏秀參
連結:https://www.zhihu.com/question/41037974/answer/150522307
來源:知乎

 

  • 全連線層(fully connected layers,FC)在整個卷積神經網路中起到“分類器”的作用。如果說卷積層、池化層和啟用函式層等操作是將原始資料對映到隱層特徵空間的話,全連線層則起到將學到的“分散式特徵表示”對映到樣本標記空間的作用。在實際使用中,全連線層可由卷積操作實現:對前層是全連線的全連線層可以轉化為卷積核為1x1的卷積;而前層是卷積層的全連線層可以轉化為卷積核為hxw的全域性卷積,h和w分別為前層卷積結果的高和寬(注1
    )。
  • 目前由於全連線層引數冗餘(僅全連線層引數就可佔整個網路引數80%左右),近期一些效能優異的網路模型如ResNet和GoogLeNet等均用全域性平均池化(global average pooling,GAP)取代FC來融合學到的深度特徵,最後仍用softmax等損失函式作為網路目標函式來指導學習過程。需要指出的是,用GAP替代FC的網路通常有較好的預測效能。具體案例可參見我們在ECCV'16(視訊)表象性格分析競賽中獲得冠軍的做法:「冠軍之道」Apparent Personality Analysis競賽經驗分享 - 知乎專欄 ,project:Deep Bimodal Regression for Apparent Personality Analysis
  • 在FC越來越不被看好的當下,我們近期的研究(In Defense of Fully Connected Layers in Visual Representation Transfer)發現,FC可在模型表示能力遷移過程中充當“防火牆”的作用。具體來講,假設在ImageNet上預訓練得到的模型為\mathcal{M} ,則ImageNet可視為源域(遷移學習中的source domain)。微調(fine tuning)是深度學習領域最常用的遷移學習技術。針對微調,若目標域(target domain)中的影象與源域中影象差異巨大(如相比ImageNet,目標域影象不是物體為中心的影象,而是風景照,見下圖),不含FC的網路微調後的結果要差於含FC的網路。因此FC可視作模型表示能力的“防火牆”,特別是在源域與目標域差異較大的情況下,FC可保持較大的模型capacity從而保證模型表示能力的遷移。(冗餘的引數並不一無是處。)