1. 程式人生 > >《深度學習入門之pythoch》 讀書筆記——卷積神經網路

《深度學習入門之pythoch》 讀書筆記——卷積神經網路

之前就購買了這本書,但是一直處於閒看的狀態,時至年底,深感不能再繼續之前狀態,故從正在閱讀的部分開始寫讀書筆記,之前的會在後邊補充。

原理和結構

卷積神經網路以其強大的計算機視覺能力倍受人們的青睞。
作者首先提出了三個觀點,也就是圖片的三個性質,分別是:

  • 區域性性,
  • 相同性,
  • 不變性,也就是如果我們實現下采樣,它的基本性質儲存不變

上面的三個性質分別對應著卷積神經網路的三種思想。

全連線神經網路的有一系列隱藏層組成,每個隱藏層由若干個神經元組成,每個神經元與前一層的所有神經元相關聯,但是每一層中神經元相互獨立。對於處理影象並不是一個好的選擇。
卷積神經網路不同於一般的全連線神經網路,是一個3D容量的神經元,也就是以三個維度來排列的:寬度、高度、深度。它的主要層結構有三個:巻積層、池化層和全連線層

。巻積層和全連線層擁有引數,而啟用層和池化層不擁有引數。使用梯度下降的辦法進行更新,最終實現圖片的識別。

1.巻積層

巻積層是卷積神經網路的核心。

下面是作者總結的巻積層的性質

  1. 輸入資料體的尺寸是W1*H1*D1
  2. 4個超引數:濾波器數量K,濾波器空間尺寸F,滑動步長S,零填充的數量P。
  3. 輸出資料體的尺寸W2*H2*D2,其中,W2=(W1-F+2P)/S+1,H2=(H1-F+2P)/S+1,D2=K.
  4. 由於引數共享,每個濾波器包含的權重數目為F*F*D1,巻積層一共有F*F*D1*K個權重和K個偏置
  5. 在輸出體資料中,第d個深度切片(空間尺寸是W2*H2),用第d個濾波器和輸入資料進行有效卷積運算的結果,再加上第d個偏置
    對於卷積神經網路中的超引數,常見的設定是F=3,S=1,P=1。同時,這些引數也有著一些約定俗成的慣例和經驗。

2.池化層

通常在巻積層之間週期性的插入一個池化層,其作用是逐漸降低資料體的空間尺寸,這樣就能減少網路中引數的數量,減少計算資源浪費,有效的控制過擬合。
池化層示意
池化層計算
這種方式之所以有效,是因為之前提出的特徵不變形,也就是下采樣不會丟失圖片的特徵,因此將圖片縮小進行卷積運算能夠大大的降低卷積運算的時間。
最常用的的池化層形式是尺寸為2*2的視窗,滑動步長為2,對影象進行下采樣,會丟失75%的資訊,選擇其中最大的保留下來。
池化層的一些性質

  1. 輸入資料的尺寸是W1*H1*D1
  2. 有兩個需要設定的超引數,空間大小F和滑動步長S
  3. 輸出資料體的尺寸是W2*H2*D2,其中,W2=(W1-F)/S+1,H2=(H1-F)/S+1,D2=D1
  4. 對輸入進行固定函式的運算,沒有引數引入
  5. 池化層中很少引入零填充

在實際中,通常有兩種方式,一種是F=2,S=2,這種池化有重疊,另外有一種是F=2,S=2,一般來說慎用比較大的池化視窗,以免對網路有破壞性。
除了最大值池化以外,還有一些其他的池化函式,如平均池化或者L2範數池化。在實際應用中,在巻積層之間引入最大值池化的效果最好,而通常在卷積神經網路的最後一層使用均值池化。

3.全連線層

全連線層和一般的神經網路一樣。
在這裡為了防止過擬合會引入Dropout,最近的研究表明,在進入全連線層之前,使用全域性平均池化能夠有效的降低過擬合。

總的來說,卷積神經網路包括以上三個層,還可以引入啟用函式增加模型的非線性,所以我們常見到的網路一般是巻積層和ReLU層放在一起,有時候前邊還有批標準化層,隨後緊跟著池化層,再不斷的重複,直到影象的尺寸縮小到一定的程度,然後展開特徵圖,連線全連線層,輸出結果
有兩點需要注意:
1、小濾波器的有效性。一般來說,幾個小濾波器的效果要好於大濾波器,唯一的不好是在反向傳播的過程之間的巻積層可能會佔用更多的記憶體
2、網路的尺寸

  1. 輸入層:一般來說,輸入層的大小應該被2整除很多次。
  2. 巻積層:儘可能的使用小濾波器,滑動步長取1.還有就是需要對輸入資料體進行零填充,以保證巻積層不會改變輸入資料體的空間尺寸
  3. 池化層:負責空間維度進行下采樣,常用2*2,滑動2
  4. 零填充:讓巻積層的輸入和輸出在空間維度上保持一致。

相關推薦

深度學習入門pythoch讀書筆記——神經網路

之前就購買了這本書,但是一直處於閒看的狀態,時至年底,深感不能再繼續之前狀態,故從正在閱讀的部分開始寫讀書筆記,之前的會在後邊補充。 原理和結構 卷積神經網路以其強大的計算機視覺能力倍受人們的青睞。 作者首先提出了三個觀點,也就是圖片的三個性質,分別是

吳恩達Coursera深度學習課程 deeplearning.ai (4-1) 神經網路--課程筆記

本課主要講解了卷積神經網路的基礎知識,包括卷積層基礎(卷積核、Padding、Stride),卷積神經網路的基礎:卷積層、池化層、全連線層。 主要知識點 卷積核: 過濾器,各元素相乘再相加 nxn * fxf -> (n-f+1)x(n-f+1)

深度學習方法(五):神經網路CNN經典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

歡迎轉載,轉載請註明:本文出自Bin的專欄blog.csdn.net/xbinworld。  技術交流QQ群:433250724,歡迎對演算法、技術感興趣的同學加入。 關於卷積神經網路CNN,網路和文獻中有非常多的資料,我在工作/研究中也用了好一段時間各種常見的model了,就想著

吳恩達Coursera深度學習課程 deeplearning.ai (4-1) 神經網路--程式設計作業

Part 1:卷積神經網路 本週課程將利用numpy實現卷積層(CONV) 和 池化層(POOL), 包含前向傳播和可選的反向傳播。 變數說明 上標[l][l] 表示神經網路的第幾層 上標(i)(i) 表示第幾個樣本 上標[i][i] 表示第幾個mi

深度學習進階(五)--神經網路深度置信網路以及自動編碼初識(補昨天部落格更新)

總結一下昨天的學習過程 (注:這幾天老不在狀態,貌似進入了學習激情的瓶頸期,動力以及平靜心嚴重失控,Python3.X與Python2.X之間的程式碼除錯,尤其是環境配置搞得頭昏腦脹) 昨天瞭解接觸的內容 CNN卷積神經網路的基本原理以及在CPU中測試以及程式碼除錯(又是失

學習筆記——基於pytorch的神經網路

本博文為本人的學習筆記。參考材料為《深度學習入門之——PyTorch》 pytorch中文網:https://www.pytorchtutorial.com/  關於反捲積:https://github.com/vdumoulin/conv_arithmetic/blob/ma

深度學習筆記——神經網路

程式碼參考了零基礎入門深度學習(4) - 卷積神經網路這篇文章,我只對程式碼裡可能存在的一些小錯誤進行了更改。至於卷積神經網路的原理以及程式碼裡不清楚的地方可以結合該文章理解,十分淺顯易懂。 import numpy as np from functools import reduce fro

深度學習筆記-神經網路CNN與迴圈神經網路RNN有什麼區別?

CNN與RNN本質的不同就是所基於的假設不同,由於核心假設的不同,導致實現方式的差異。 CNN 首先理解什麼叫做卷積,或者說為什麼要翻譯為卷積神經網路。 卷積的定義:https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF/94110

Google 深度學習筆記 神經網路

Convolutional Networks deep dive into images and convolutional models Convnet BackGround 人眼在識別影象時,往往從區域性到全域性 區域性與區域性之間聯絡

深度學習入門】——親手實現影象操作

深度學習中有一個很重要的概念就是卷積神經網路 CNN,卷積神經網路中又有卷積層、池化層的概念。尤其是卷積層,理解難度比較大,雖然書中或者是視訊中都有詳細介紹過它的基礎概念,但對於求知慾望很強烈的我,我總心裡癢癢的,總想親手實現,看看效果,怕的就是自己會眼高手低,

深度學習框架tensorflow學習與應用10(MNSIT神經網路實現)

  import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('F:/PY/MNIST_data/',

[DeeplearningAI筆記]神經網路4.11一維和三維

4.4特殊應用:人臉識別和神經網路風格轉換 覺得有用的話,歡迎一起討論相互學習~Follow Me 4.11一維和三維卷積 二維和一維卷積 * 對於2D卷積來說,假設原始影象為1

TensorFlow實戰實現AlexNet經典神經網路

本文根據最近學習TensorFlow書籍網路文章的情況,特將一些學習心得做了總結,詳情如下.如有不當之處,請各位大拿多多指點,在此謝過。 一、AlexNet模型及其基本原理闡述 1、關於AlexNet             2012年,AlexKrizhevsky提出

[DeeplearningAI筆記]神經網路1.4-1.5Padding與步長

4.1卷積神經網路 覺得有用的話,歡迎一起討論相互學習~Follow Me 1.4Padding 一張6∗66∗6大小的圖片,使用3∗33∗3的卷積核設定步長為1,經過卷積操作後得到一個

架構美-最強神經網路架構設計初想

上圖展示了兩種形態的殘差模組,左圖是常規殘差模組,有兩個3×3卷積核組成,但是隨著網路進一步加深,這種殘差結構在實踐中並不是十分有效。針對這問題,右圖的“瓶頸殘差模組”(bottleneck residual block)可以有更好的效果,它依次由1×1、3×3、1×1這三個卷積層堆積而成,這裡的1×1的卷積

PyTorch基礎入門六:PyTorch搭建神經網路實現MNIST手寫數字識別

1)卷積神經網路(CNN)簡介 關於什麼是卷積神經網路(CNN),請自行查閱資料進行學習。如果是初學者,這裡推薦一下臺灣的李巨集毅的深度學習課程。連結就不給了,這些資料網站上隨處可見。 值得一提的是,CNN雖然在影象處理的領域具有不可阻擋的勢頭,但是它絕對不僅僅只能用來影

CNN入門講解:如何理解神經網路的結構

原創文章,一家之言。 個人公眾號:follow_bobo 知乎號:蔣竺波 轉載請通知本人。 大家好,我是波波,歡迎再次來到CNN入門講解。 上次我們講什麼卷積以及卷積在卷積神經網路裡的作用,那我們這一期來理一理卷積神經網路大致的結構 嗎? 我不!! 驚不驚喜?

deep learning tutorial 翻譯(theano學習指南4(翻譯)- 神經網路

from theano.tensor.nnet import conv rng = numpy.random.RandomState(23455) # instantiate 4D tensor for input input = T.tensor4(name='input') # initializ

入門 | 一文看懂神經網路

本文選自Medium,主要介紹了神經網路中的卷積神經網路,適合初學者閱讀。概述深度學習和人工智慧

[DeeplearningAI筆記]神經網路3.1-3.5目標定位/特徵點檢測/目標檢測/滑動視窗的神經網路實現/YOLO演算法

4.3目標檢測 覺得有用的話,歡迎一起討論相互學習~Follow Me 3.1目標定位 物件定位localization和目標檢測detection 判斷影象中的物件是不是汽車–I