1. 程式人生 > >深度卷積神經網路學習筆記(一)

深度卷積神經網路學習筆記(一)

1.卷積操作實質:

      輸入影象(input volume),在深度方向上由很多slice組成,對於其中一個slice,可以對應很多神經元,神經元的weight表現為卷積核的形式,即一個方形的濾波器(filter)(如3X3),這些神經元各自分別對應影象中的某一個區域性區域(local region),用於提取該區域的特徵。如果該slice對應的神經元引數共享,那麼相當於只有一個卷積核作用於所有的區域性區域(類似於影象濾波了)。一個區域性區域可以稱為一個block,如果將所有的block拉成一個個列向量(因為神經元作用本來就定義為將輸入向量和引數向量進行內積操作,y=w0x0+w1x1+...+wnxn

),則我們可以得到很多這些列向量組成的區域性區域資料矩陣,再將神經元的weight拉成一個個行向量,這樣就得到一個引數矩陣(如果引數共享,那麼該矩陣行數為slice的個數),然後將資料矩陣和引數矩陣進行點積操作,得到卷積後結果,其實就是將所有的filter和所有的區域性區域分別進行點積操作,當然這個結果還需要重新reshape到期望的輸出尺寸。這個過程其實也解釋了為什麼神經元的引數可以儲存在一個個filter中,該網路層為什麼稱為卷積層。

        下圖轉自https://www.zhihu.com/question/28385679

                                          

                                             

                                                

                                                    

最後一頁沒畫,但是基本上就是Filter Matrix乘以Feature Matrix的轉置,得到輸出矩陣Cout x (H x W),就可以解釋為輸出的三維Blob(Cout x H x W)。

2.經過卷積後輸出影象尺寸:

     假設輸入影象尺寸為W,卷積核尺寸為F,步幅(stride)為S

(卷積核移動的步幅),Padding使用P(用於填充輸入影象的邊界,一般填充0),那麼經過該卷積層後輸出的影象尺寸為(W-F+2P)/S+1。

3.池化

池化層通過減小中間過程產生的特徵圖的尺寸(下采樣,影象深度不變),從而減小引數規模,降低計算複雜度,也可以防止過擬合。池化是分別獨立作用於影象深度方向上的每個slice,一般使用Max操作(在一個區域性區域內取最大值代表該區域),即最大池。通常池化層的空間尺寸(spatial extent)不應過大,過大會丟失太多結構資訊,一般取F=3,S=2或者F=2,S=2也有人不建議使用池化,而是在卷積層增大stride來降低影象尺寸。

4.全連線

   一個神經元作用於整個slice,即filter的尺寸恰好為一個slice的尺寸,這樣輸出一個值,如果有n個filter,則輸出長度為n的向量,一般全連線層的輸出為類別/分數向量(class scores )。

5. 網路的結構

網路的一般結構為:

     INPUT   ->   [[CONV -> RELU]*N -> POOL?]*M   ->   [FC -> RELU]*K   ->   FC

     INPUT:輸入

     CONV:卷積層

     RELU:啟用函式

     POOL:池化層,這裡的問號表示該層是可選的

     FC:全連線層

     N >= 0 (通常N <= 3)M >= 0K >= 0 (通常 K < 3)

6.其他

(1)儘量使用多層fliter尺寸小的卷積層代替一層filter較大的卷積層。

           因為使用多層filter較小的卷積層所能觀察到的區域大小和一層filter較大的卷積層是相同的,但是前者可以看到更加抽象的特徵,提取的特徵表達效能更佳。

           此外,前者引入的引數規模相比後者更小。比如,使用3層filter為3X3的卷積層代替1層filter為7X7的卷積層,假設輸入的volume為C個通道則前者引數

           個數為3×(C×(3×3×C))=27C^2,而後者為C×(7×7×C)=49C^2,明顯前者引入的引數更少。

   (2)為什麼使用padding?

           使用padding的好處是使得卷積前後的影象尺寸保持相同,可以保持邊界的資訊。一般padding的大小為P=(F-1)/2,其中F為filter的尺寸。如果不使用

            paddding,則要仔細跟蹤影象尺寸的變化,確保每一層filter和stride正確的被使用。

   (3)為什麼stride一般設為1?

           stride設為1實際表現效果更好,將下采樣的工作全部交給池化層。

   (4)輸入層(input layer)尺寸一般應該能被2整除很多次,比如32(CIFAR-10),64,96(STL-10),224(common ImageNet ConvNets),384和512。

   (5)儘量使用filter較小(3x3 or 至多 5x5)的卷積層,如果要使用較大的filter(比如7x7),一般也只在第一個卷積層。

   (6)有時候由於引數太多,記憶體限制,會在第一個卷積層使用較大filter(7x7)和stride(2)(參考 ZF Net),或者filter(11x11),stride(4)

        (參考 AlexNet)。

相關推薦

深度神經網路學習筆記

1.卷積操作實質:       輸入影象(input volume),在深度方向上由很多slice組成,對於其中一個slice,可以對應很多神經元,神經元的weight表現為卷積核的形式,即一個方形的濾波器(filter)(如3X3),這些神經元各自分別對應影象中的某一個區域性區域(local region

深入淺出——搞懂神經網路誤差分析

第一部分 全連線網路的權值更新   卷積神經網路使用基於梯度的學習方法進行監督訓練,實踐中,一般使用隨機梯度下降(機器學習中幾種常見的梯度下降方式)的版本,對於每個訓練樣本均更新一次權值,誤差函式使用誤差平方和函式,誤差方式採用平方誤差代價函式。   注:本

深度神經網路學習

卷積神經網路的基礎模組為卷激流包括卷積(用於維數拓展)、非線性(洗屬性、飽和、側抑制)、池化(空間或特徵型別的聚合)和批量歸一化(優化操作,目的是為了加快訓練過程中的收斂速度,同事避免陷入區域性最優)等四種操作。下面簡單介紹這四種操作。 1、卷積:利用卷積核對輸入影象進行處

深度學習 --- 深度神經網路詳解AlexNet 網路詳解

  本篇將解釋另外一個卷積神經網路,該網路是Hinton率領的谷歌團隊(Alex Krizhevsky,Ilya Sutskever,Geoffrey E. Hinton)在2010年的ImageNet大賽獲得冠軍的一個神經網路,因此本節主要參考的論文也是這次大賽的論文即“Imag

深度學習小白——神經網路視覺化

一、由卷積後的code得到原始影象 可以看出隨著卷積網路的進行,越來越多的資訊被扔掉了,能還原除的資訊也就越少。 二、Deep Dream google發明的起初是用來看神經網路各層在“看”什麼,後來因為得到的影象很具有藝術感,所以成為了一個藝術圖片生成器。 這是一

深度學習神經網路程式設計實現

void conv_bprop(Layer *layer, Layer *prev_layer, bool *pconnection) { int index = 0; int size = prev_layer->map_w * prev_layer->map_h; // delta

神經網路學習筆記——Siamese networks孿生神經網路

完整程式碼及其資料,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/DeepLearningNote   在整理這些知識點之前,我建議先看一下原論文,不然看我這個筆記,感覺想到哪裡說哪裡,如果看了論文,還有不懂的,正好這篇部落

神經網路學習筆記——輕量化網路MobileNet系列V1,V2,V3

完整程式碼及其資料,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/DeepLearningNote   這裡結合網路的資料和MobileNet論文,捋一遍MobileNet,基本程式碼和圖片都是來自網路,這裡表示感謝,參考連

神經網路-學習筆記

1. Edge Detection Vertical Edge Detection: Convolve the image with Matrix

【Coursera】吳恩達 deeplearning.ai 04.神經網路 第二週 深度神經網路 課程筆記

深度卷積神經網路 2.1 為什麼要進行例項化 實際上,在計算機視覺任務中表現良好的神經網路框架,往往也適用於其他任務。 2.2 經典網路 LeNet-5 AlexNet VGG LeNet-5 主要針對灰度影象 隨著神經網路的加深

CNN神經網路學習筆記1:背景介紹

     Convolutional Neural Network 卷積神經網路是基於人工神經網路提出的。人工神經網路模擬人的神經系統,由一定數量的神經元構成。在一個監督學習問題中,有一組訓練資料(xi,yi),x是樣本,y是label,把它們輸入人工神經網路,

神經網路學習筆記

之前也一直用CNN提特徵,但也僅僅將其看成一個特徵提取器,網路內部結構我也大概知道,但是不太精細,因此今天想要重新學習一下CNN網路的構造與資料流傳輸的問題,鞏固下基礎。 1.卷積神經網路最重要的兩點: 傳統神經網路層與層之間是全部連線起來的,這樣引數就

神經網路學習筆記——SENet

完整程式碼及其資料,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/DeepLearningNote   這裡結合網路的資料和SENet論文,捋一遍SENet,基本程式碼和圖片都是來自網路,這裡表示感謝,參考連結均在後文。下面

神經網路學習筆記1Image Classification

學習網站: 資料驅動方法 KNN(例如採用L1曼哈頓距離) 程式碼如下: import numpy as np class NearestNeighbor: def train(self,X,y): self.Xtrain=X self

神經網路學習筆記:感知機收斂定理

   先對與操作進行討論,與(AND)操作需要將(0,0)(0,1)(1,0,)(1,1)進行二分類,結果輸出0或者1,顯然前三個點對應輸出為0的類,最後一個點對應輸出為1的類,這四個點在二維平面上一畫很容易看出,有無數條線可以將其分類。故是線性可分的類,同理可證或,非邏輯操作。

神經網路學習筆記:感知機

  感知機在神經網路發展的歷史上佔據著重要的位置:它是第一個從演算法上完整描述的神經網路。它的發明者Rosenblatt是一位心理學家。   感知機是用於線性可分模式(即不同的類別可由超平面完全分割)分類的最簡單的神經網路模型,基本上它是由一個具有可調突觸權值和偏置的神經

神經網路學習筆記 徑向基函式神經網路

徑向基函式神經網路 首先介紹一下網路結構: 1.輸入層為向量,維度為m,樣本個數為n,線性函式為傳輸函式。 2.隱藏層與輸入層全連線,層內無連線,隱藏層神經元個數與樣本個數相等,也就是n,傳輸函式為徑向基函式。 3.輸出層為線性輸出。 理論

神經網路學習筆記) RBF徑向基函式神經網路

RBF徑向基函式神經網路 初學神經網路,以下為綜合其他博主學習材料及本人理解所得。 一、RBF神經網路的基本思想 1. 用RBF作為隱單元的“基”構成隱含層空間,將輸入向量直接(不通過權對映)對映到隱空間。 2.當RBF的中心點確定後,對映關係也就確定。(中心點通常通

神經網路學習筆記2

神經網路學習筆記(2)   本文是神經網路學習筆記的第二部分,緊接著筆者的神經網路學習筆記(1),主要內容為對總結神經網路的常用配置方式,包括如下幾點:(1)資料預處理;(2)權重初始化;(3)正則化與Dropout;(4)損失函式。   1、資料預處理   對於神經網路而言,資料的預處理常見的方法主要包括0

tensorflow學習筆記第一天-深度神經網路

一、在這裡首先需要了解一些概念性的東西,當然我是才接觸,還不太熟悉: 1.numpy      NumPy系統是Python的一種開源的數值計算擴充套件。這種工具可用來儲存和處理大型矩陣,比Python自身的巢狀列表(nested l