天天看點

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

點選上方,選擇星标或置頂,每天給你送幹貨

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

正文共:9373字 46圖

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

閱讀大概需要:24分鐘

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

跟随小部落客,每天進步一丢丢

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)
cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)
cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

文章首發于本人CSDN賬号:https://blog.csdn.net/tefuirnever

由于微信不允許外部連結,你需要點選頁尾左下角的“

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

0、前言

本文創作的主要目的,是對時下最火最流行的深度學習算法的基礎知識做一個簡介,本人看過許多教程,感覺對小白不是特别友好,尤其是在踩過好多坑之後,于是便有了寫這篇文章的想法。

由于文章較長,建議收藏~

本文文中會有個人推薦的學習資源。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

一、簡介

百度百科中對深度學習的定義是深度學習(DL, Deep Learning)是機器學習(ML, Machine Learning)領域中一個新的研究方向,它被引入機器學習使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。這個定義太大了,反而讓人有點不懂,簡答來說,深度學習就是通過多層神經網絡上運用各種機器學習算法學習樣本資料的内在規律和表示層次,進而實作各種任務的算法集合。各種任務都是啥,有:資料挖掘,計算機視覺,語音識别,自然語言處理等。

可能有人會問那麼深度學習,機器學習還有人工智能的關系是怎麼樣的呢?在這個部落格中有詳細介紹:一篇文章看懂人工智能、機器學習和深度學習,我們這裡直接拿出結論:

  • AI:讓機器展現出人類智力
  • 機器學習:抵達AI目标的一條路徑
  • 深度學習:實作機器學習的技術

深度學習從大類上可以歸入神經網絡,不過在具體實作上有許多變化,并不像大家聽到的一樣,覺得這兩個概念其實是同一個東西:

  • 從廣義上說深度學習的網絡結構也是多層神經網絡的一種。更簡單來說,多層神經網絡 做的步驟是:特征映射到值。特征是 人工 挑選。深度學習 做的步驟是 信号->特征->值。特征是由 網絡自己 選擇。

深度學習的核心是 特征學習,旨在通過分層網絡擷取分層次的特征資訊,進而解決以往需要人工設計特征的重要難題。深度學習是一個架構,包含多個重要算法:

  • Convolutional Neural Networks(CNN)卷積神經網絡
  • AutoEncoder自動編碼器
  • Sparse Coding稀疏編碼
  • Restricted Boltzmann Machine(RBM)限制波爾茲曼機
  • Deep Belief Networks(DBN)深度信念網絡
  • Recurrent neural Network(RNN)多層回報循環神經網絡神經網絡

對不同的任務(圖像,語音,文本),需要選用不同的網絡模型才能達到更好的效果。

此外,最近幾年 增強學習(Reinforcement Learning) 與深度學習的結合也創造了許多了不起的成果,AlphaGo就是其中之一。

大家比較關注的熱點新聞,如下圖所示:
cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)
cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

二、人類視覺原理

深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。

1981 年的諾貝爾醫學獎,頒發給了 David Hubel(出生于加拿大的美國神經生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“發現了視覺系統的資訊處理”——可視皮層是分級的。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

進而通過大量試驗研究,發現了人類的視覺原理,具體如下:從原始信号 攝入 開始(瞳孔攝入像素 Pixels),接着做 初步處理(大腦皮層某些細胞發現邊緣和方向),然後 抽象(大腦判定,眼前的物體的形狀,是圓形的),然後 進一步抽象(大腦進一步判定該物體是隻氣球)。

下面是人腦進行人臉識别的一個示例。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

總的來說,人的視覺系統的資訊處理是 分級 的。從低級的V1區 提取邊緣特征,再到V2區的 形狀或者目标的部分 等,再到更高層,整個目标、目标的行為 等。也就是說高層的特征是低層特征的組合,從低層到高層的特征表示越來越抽象,越來越能表現語義或者意圖。而抽象層面越高,存在的可能猜測就越少,就越利于分類。

對于不同的物體,人類視覺也是通過這樣 逐層分級,來進行認知的。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

那麼可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網絡,較低層的識别初級的圖像特征,若幹底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

三、神經網絡

首先什麼是神經網絡呢?神經網絡也指的是 人工神經網絡(Artificial Neural Networks,簡稱ANNs),是一種模仿生物神經網絡行為特征的算法數學模型,由 神經元、節點與節點之間的連接配接(突觸) 所構成,如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

每個神經網絡單元抽象出來的數學模型如下,也叫 感覺器,它接收多個輸入(,,),産生一個輸出,這就好比是神經末梢感受各種外部環境的變化(外部刺激),然後産生電信号,以便于轉導到神經細胞(又叫神經元)。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

單個的感覺器就構成了一個簡單的模型,但在現實世界中,實際的決策模型則要複雜得多,往往是由多個感覺器組成的多層網絡,如下圖所示,這也是經典的神經網絡模型,由 輸入層、隐含層、輸出層 構成。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

人工神經網絡可以映射任意複雜的非線性關系,具有很強的魯棒性、記憶能力、自學習等能力,在分類、預測、模式識别等方面有着廣泛的應用。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

四、卷積神經網絡

4.1、CNN定義

主角登場,其他人退讓!!!如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

重點來了,什麼是卷積神經網絡?

百度百科中的定義是 卷積神經網絡(Convolutional Neural Networks, CNN)是一類包含卷積計算且具有深度結構的前饋神經網絡(Feedforward Neural Networks),是深度學習(deep learning)的代表算法之一,擅長處理圖像特别是圖像識别等相關機器學習問題。

卷積網絡通過一系列方法,成功将資料量龐大的圖像識别問題不斷降維,最終使其能夠被訓練。

4.2、卷積(Convolution)

卷積神經網絡中的核心即為 卷積運算,其相當于圖像進行中的 濾波器運算。對于一個 大小的卷積核,

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

其對某一原圖像 進行卷積運算的過程為:卷積核 中的每一個權值 分别和覆寫的原圖像 中所對應的像素 相乘,然後再求和。計算公式為:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

是以一幅圖像的一個完整的卷積運算過程為:卷積核以一定的間隔滑動,并對所覆寫的區域進行卷積運算得到值 z,直至周遊完整幅圖像。如下圖所示:![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20190825170718271.gif#pic_center =500x400) 舉一個标準的卷積運算例子,初始位置的計算過程是:1x1+1x0+1x1+0x0+1x1+1x0+0x1+0x0+1x1=4,詳細的就不推導了。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

如上圖,卷積核大小是3x3的,也就是說其卷積核每次覆寫原圖像的9個像素,行和列都滑動了3次,一共滑動3x3=9次,得到了一個 的二維資料。這個大小是怎麼計算的呢?

首先給出結論,對于一個大小為 的原圖像,經過大小為 的卷積運算後,其輸出圖像的尺寸為 。是以對于上圖的例子,5-3+1=3即為所求。

4.3、步長(stride)

滑動一定的間距,但這個間距該如何定義呢? 這個概念就是卷積的 “步長”(stride)。經過步長 的操作後,其輸出圖像的尺寸為:

其中 n 是圖像大小,f 是卷積核大小,s 是步長。

stride = 1 表示卷積核滑過每一個相距是 1 的像素,是最基本的單步滑動,作為标準卷積模式。Stride 是 2 表示卷積核的移動步長是 2,跳過相鄰像素,輸出圖像縮小為原來的 1/2。Stride 是 3 表示卷積核的移動步長是 3,跳過 2 個相鄰像素,圖像縮小為原來的 1/3,以此類推。。。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

詳細的卷積層尺寸推算細節可以看一下這個文章——CNN中卷積層的計算細節

4.4、填充(padding)

在标準的卷積過程中,存在兩個問題:

  • 每次卷積運算後,圖像就會縮小尺寸。在經曆多次運算後,圖像最終會失去其本來的形狀,變為 的 “柱狀”。
  • 對于圖像邊緣的像素,隻被一個輸出使用,但圖像中間的像素,則被多個輸出使用。這意味着卷積過程丢掉了圖像邊緣位置的許多資訊。

對于這個問題,可以采用額外的 “假” 像素(通常值為 0, 是以經常使用的術語 ”零填充“ )填充邊緣。這樣,在滑動時的卷積核可以允許原始邊緣像素位于其中心,同時延伸到邊緣之外的假像素。假設填充的像素大小為 ,則 就變成了 ,故其輸出圖像的尺寸為 。

至于是否選擇填充像素,通常有兩個選擇,分别叫做 Valid 卷積和 Same 卷積。

  • Valid 卷積意味着 不填充,即圖像會通過卷積并逐漸縮小,輸出的圖像尺寸即為上述公式:。
  • Same卷積意味 填充,輸出圖像的尺寸與輸入圖像的尺寸相同。

根據上述尺寸的計算公式,令 ,可得到 。當 s=1 時,。

4.5、池化(Pooling)

随着模型網絡不斷加深,卷積核越來越多,要訓練的參數還是很多,而且直接拿卷積核提取的特征直接訓練也容易出現過拟合的現象。CNN使用的另一個有效的工具被稱為“池化(Pooling)”出現并解決了上面這些問題,為了有效地減少計算量,池化就是将輸入圖像進行縮小,減少像素資訊,隻保留重要資訊;為了有效地解決過拟合問題,池化可以減少資料,但特征的統計屬性仍能夠描述圖像,而由于降低了資料次元,可以有效地避免過拟合。

給出池化的定義,對不同位置區域提取出有代表性的特征(進行聚合統計,例如最大值、平均值等),這種聚合的操作就叫做 池化,池化的過程通常也被稱為 特征映射 的過程(特征降維)。聽起來很高深,其實簡單地說就是下采樣。

池化的過程如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

池化主要有兩種,除了 最大值池化(Max Pooling) 之外,還有 平均值池化(Average pooling),CNN中随機池化使用的較少。

最大池化是對局部的值取最大;平均池化是對局部的值取平均;随機池化是根據機率對局部的值進行采樣,采樣結果便是池化結果。概念非常容易了解,其示意圖如下所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

三種池化的意義:

  • 最大池化可以擷取局部資訊,可以更好保留紋理上的特征。如果不用觀察物體在圖檔中的具體位置,隻關心其是否出現,則使用最大池化效果比較好。
  • 平均池化往往能保留整體資料的特征,能凸出背景的資訊。
  • 随機池化中元素值大的被選中的機率也大,但不是像最大池化總是取最大值。随機池化一方面最大化地保證了Max值的取值,一方面又確定了不會完全是max值起作用,造成過度失真。除此之外,其可以在一定程度上避免過拟合。

4.6、激活函數

回顧一下感覺機,感覺機在接收到各個輸入,然後進行求和,再經過激活函數後輸出。為什麼神經網絡需要非線性激活函數?

為了使神經網絡能夠拟合出各種複雜的函數,必須使用 非線性激活函數,用來加入非線性因素,把卷積層輸出結果做非線性映射。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

在神經網絡的正向傳播過程中,如果我們去掉激活函數 ,則 ,這個有時被叫做 線性激活函數(更學術點的名字是 恒等激勵函數,因為它們就是把輸入值恒等地輸出),具體公式如下:

第一層:

第二層:

将 帶入可得第二層:,令 ,,則第二層變為:。

依此類推,網絡的輸出僅僅隻是輸入特征的線性組合。實際上,無論網絡有多少層,整體完全可以僅使用1層表示。同理,引入其他線性函數 (如 )仍然起不到任何作用,因為線性函數的組合本身仍是線性函數。

常用的激活函數有sigmoid、tanh、relu等等,前兩者sigmoid / tanh比較常見于全連接配接層,後者ReLU常見于卷積層。

4.7、局部感覺

為什麼要采用局部感覺呢?因為可以降低參數量級。為什麼要降低參數量級呢?因為如果采用經典的神經網絡模型,如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

則需要讀取整幅圖像作為神經網絡模型的輸入(即全連接配接的方式),當圖像的尺寸越大時,其連接配接的參數将變得很多,進而導緻計算量非常大。比如對于一張1000x1000像素的圖檔,如果我們有1M隐藏層單元,那麼一共有 個參數,這顯然是不能接受的。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

而人類對外界的認知一般是從局部到全局、從片面到全面,先對局部有感覺的認識,再逐漸對全體有認知,這是人類的認識模式。類似的,在機器識别圖像時也沒有必要把整張圖像按像素全部都連接配接到神經網絡中,局部範圍内的像素之間聯系較為緊密,而距離較遠的像素則 相關性較弱。因而,每個神經元其實沒有必要對全局圖像進行感覺,隻需要對局部進行感覺,然後在更高層将局部的資訊綜合起來就得到了全局的資訊。這種模式就是卷積神經網絡中降低參數數目的重要神器:局部感受野,節省了記憶體。

4.8、參數(權值)共享

每張自然圖像(人物、山水、建築等)都有其固有特性,也就是說,圖像其中一部分的統計特性與其它部分是接近的。這也意味着這一部分學習的特征也能用在另一部分上。是以,在局部連接配接中隐藏層的每一個神經元連接配接的局部圖像的權值參數(例如5×5),将這些 權值參數共享 給其它剩下的神經元使用,那麼此時不管隐藏層有多少個神經元,需要訓練的參數就是這個局部圖像的權限參數(例如5×5),也就是卷積核的大小,這樣大大減少了訓練參數。如下圖所示:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

舉個例子,假設使用某一特征過濾器(檢測器)提取 “手寫5” 的特征,那麼圖檔的右下角區域,以及旁邊的各個區域都可以使用這個過濾器。每個特征檢測器以及輸出都可以在輸入圖檔的不同區域中使用同樣的參數,以便提取特征 “5”。而對于全連接配接網絡來說,如果模式出現在新的位置,它隻能重新學習這個模式。這使得卷積神經網絡在處理圖像時可以高效利用資料(因為視覺世界從根本上具有 平移不變性),隻需要更少的訓練樣本就可以學到具有泛化能力的資料表示。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

4.9、感受野(Receptive field)

感受野用來表示網絡内部的不同神經元對原圖像的感受範圍的大小,換句話說,即為每一層輸出的特征圖(feature map)上的像素點在原始圖像上映射的區域大小。

神經元之是以無法對原始圖像的所有資訊進行感覺,是因為在這些網絡結構中普遍使用卷積層和pooling層,在層與層之間均為局部連接配接。神經元感受野的值越大表示其能接觸到的原始圖像範圍就越大,也意味着它可能蘊含更為全局,語義層次更高的特征;相反,值越小則表示其所包含的特征越趨向局部和細節。是以感受野的值可以用來大緻判斷每一層的抽象層次。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

可以看到在Conv1中的每一個單元所能看到的原始圖像範圍是33,而由于Conv2的每個單元都是由 22範圍的Conv1構成,是以回溯到原始圖像,其實是能夠看到5*5的原始圖像範圍的。是以我們說Conv1的感受野是3,Conv2的感受野是5。輸入圖像的每個單元的感受野被定義為1,這應該很好了解,因為每個像素隻能看到自己。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

五、可視化

學習前的卷積核是随機進行初始化的,使用截斷的正态分布或者其他的,是以在黑白的濃淡上沒有規律可循,但學習後的濾波器變成了有規律的圖像。可以發現,通過學習濾波器被更新成了有規律的濾波器,比如從白到黑漸變的濾波器、含有塊狀區域(稱為blob)的濾波器等。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

不同卷積核經過學習,改變了自身對不同特征的響應程度,如邊緣(顔色變化的分界線)和斑塊(局部的塊狀區域)等,其中第2個卷積核對垂直邊緣響應,第5個卷積核對水準邊緣響應,第9個對傾斜邊緣響應,第13個對中心斑塊響應。

上面的結果是針對第1層的卷積層得出的。第1層的卷積層中提取了邊緣或斑塊等“低級”資訊,而在堆疊了多層的CNN中,随着層次加深,提取的資訊(準确說,是響應強烈的神經元))也越來越抽象。如圖6.2所示,第1層的神經元對邊緣或斑塊有響應,第3層對紋理有響應,第5層對物體部件有響應,最後的全連接配接層對物體的類别(狗或車)有響應。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

也就是說,随着層次加深,神經元從簡單的形狀向“進階”資訊變化。換句話說,就像我們了解東西的“含義”一樣,響應的對象在逐漸變化。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

六、應用

CNN 最早 由Yann LeCun提出并應用在 手寫字型識别上(MINST)。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

當年美國大多數銀行就是用它來識别支票上面的手寫數字的。能夠達到這種商用的地步,它的準确性可想而知。畢竟目前學術界和工業界的結合是最受争議的。LeCun提出的網絡稱為LeNet5(效果和paper等的連結在這),其網絡結構如下:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

這是一個最典型的卷積網絡,由卷積層、池化層、全連接配接層組成,通過巧妙的設計,利用卷積、參數共享、池化等操作 提取特征,避免了大量的計算成本,最後再使用全連接配接神經網絡進行 分類識别,這個網絡也是最近大量神經網絡架構的起點,給這個領域帶來了許多靈感。

詳細的論文講解,可以檢視這個部落格——大話CNN經典模型:LeNet

可視化的結果:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)
cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

七、深度學習的本質

在Hinton對深層網絡做Pre-Train開始就是一個 經驗領先于理論分析的偏經驗 的一門學問,是以很多人戲稱為 黑盒子。那麼深度學習的本質到底是什麼呢?

我個人更偏向于這種說法——本質就是高維特征變換器,理論上可以做到任意非線性變換。神經網絡在坐标系變換的同時,也順便充當了資訊過濾器。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

八、境界

深度學習目前處于風口,于是很多人想要渾水摸魚,都來分一杯羹,然而可能很多人連深度學習是什麼都不知道。是以很多人在自學的時候,又不知道從何學起。下了一堆資料,跑了一堆demo,報了一堆cousera,調調參,看看模型結果不錯,就以為入了門,抱歉,可能你連門都沒入。深度學習這塊,有幾個層次:

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)
  • demo俠:下載下傳了目前所有流行的架構,對不同框裡的例子都跑一跑,看看結果,覺得不錯就行了,進而覺得,嘛,深度學習也不過如此嘛,沒有多難啊。在面試的時候經常可以遇到不少,很多學生或者剛轉行的上來就是講一個demo,手寫數字識别,cifar10資料的圖像分類等等,然而你問他這個手寫數字識别的具體過程如何實作的?現在效果是不是目前做好的,可以再優化一下嗎?為什麼激活函數要選這個,可以選别的嗎?CNN的原理能簡單講講嗎?懵逼了。
  • 調參俠:此類人可能不局限于跑了幾個demo,對于模型裡的參數也做了一些調整,不管調的好不好,先試了再說,每個都試一下,學習率調大了準确率下降了,那就調小一點,那個參數不知道啥意思,随便改一下值測一下準确率吧。這是大多數初級深度學習工程師的現狀。當然,并不是這樣不好,對于demo俠來說,已經進步了不少了,起碼有思考。然而如果你問,你調整的這個參數為什麼會對模型的準确率帶來這些影響,這個參數調大調小對結果又會有哪些影響,就又是一問三不知了。
  • 懂原理俠:抱歉起了個這麼蠢的名字。但是,進階到這一步,已經可以算是入門了,可以找一份能養活自己的工作了。CNN,RNN,LSTM信手拈來,原理講的溜的飛起,對于不同的參數對模型的影響也是說的有理有據,然而,如果你要問,你可以手動寫一個CNN嗎?不用調包,實作一個最基礎的網絡結構即可,又gg了。
  • 懂原理+能改模型細節俠:如果你到了這一步,恭喜你,入門了。對于任何一個做機器學習/深度學習的人來說,隻懂原理是遠遠不夠的,因為公司不是招你來做研究員的,來了就要幹活,幹活就要落地。既然要落地,那就對于每一個你熟悉的,常見的模型能夠自己手動寫代碼運作出來,這樣對于公司的一些業務,可以對模型進行适當的調整和改動,來适應不同的業務場景。這也是大多數一二線公司的工程師們的現狀。然而,對于模型的整體架構能力,超大資料的分布式運作能力,方案設計可能還有所欠缺。
  • 超大資料操控俠:到這一階段,基本上開始考慮超大資料的分布式運作方案,對整體架構有一個宏觀的了解,對不同的架構也能指點一二。海量資料的分布式運作如何避免網絡通信的延遲,如何更高效更迅速的訓練都有一定經驗。這類人,一般就是上一個的上司了。
  • 模型/架構架構師:前面說了一堆都是對現有的架構/模型處理的經驗,這個階段的大俠,哦,不對,是大師可以獨立設計開發一套新架構/算法來應對現有的業務場景,或者解決一直未解決的曆史遺留問題。沒啥好說了,膜拜!

有的童鞋會好奇部落客是啥水準,實話實說了吧,我也就是個 半斤八兩的懂原理俠。。。希望畢業能稱為一個 懂原理+能改模型細節俠,哈哈,暫時沒啥大目标。

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

九、學習資源

9.1、程式設計

首推Python這門程式設計語言。

  1. Python安裝:

Python安裝包,推薦下載下傳Anaconda,Anaconda是一個用于科學計算的Python發行版,支援 Linux, Mac, Windows系統,提供了包管理與環境管理的功能,可以很友善地解決多版本Python并存、切換以及各種第三方包安裝問題。

下載下傳位址:https://www.anaconda.com/download/

IDE:推薦使用pycharm,社群版免費

下載下傳位址:https://www.jetbrains.com/

安裝教程:

  • Anaconda+Jupyter notebook+Pycharm:https://blog.csdn.net/TeFuirnever/article/details/90646020
  • Ubuntu18.04深度學習環境配置(CUDA9+CUDNN7.4+TensorFlow1.8):https://zhuanlan.zhihu.com/p/50302396
  1. python入門的資料推薦

廖雪峰python學習筆記:https://blog.csdn.net/datawhale/article/category/7779959

看完這個資料後python基本達到入門水準。

9.2、理論

這絕對是深度學習入門的首選課程,沒有之一!即便你沒有紮實的機率論、線性代數等數學基礎,也能輕松上手這門深度學習入門課,并體會到無窮趣味。

課程位址:https://mooc.study.163.com/university/deeplearning_ai#/c

9.3、架構

當今深度學習架構有很多,主流的是Google的TensorFlow、Facebook的pytorch還有百度的paddlepaddle,其他的也可以學,這東西多多益善,初學者建議TensorFlow,容易了解一下。

  • TensorFlow中文社群
  • 深度學習之30分鐘快速入門PyTorch(附學習資源推薦)
  • paddlepaddle中文社群

9.4、論文

推薦這個大部落客的正例論文資源——https://blog.csdn.net/zouxy09/article/details/8782018

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

十、神經網絡遊樂場

網站位址:這裡

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

可以調整:

  • 資料分布,訓練集和測試集的比例,有無噪聲,批大小;
  • 特征,神經元個數和層數;
  • 學習率,激活函數,正則化與否以及大小,分類還是回歸。

你可以嘗試去改變相應的參數,進而感受一下網絡輸出的變化,進而體會到卷積神經網絡的樂趣,加油!!!

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~

回複【福利】即可擷取我為你準備的大禮,包括C++,程式設計四大件,NLP,深度學習等等的資料。

想看更多文(段)章(子),歡迎關注微信公衆号「程式員管小亮」~

cnn卷積神經網絡_大話卷積神經網絡CNN(幹貨滿滿)

參考文章

  • 百度百科——深度學習
  • 一篇文章看懂人工智能、機器學習和深度學習
  • “深度學習”和“多層神經網絡”的差別?
  • 深度學習簡介(一)——卷積神經網絡
  • Deep Learning(深度學習)學習筆記整理系列之(一)
  • 大話卷積神經網絡(CNN)
  • 百度百科——卷積神經網絡
  • 大話CNN經典模型:LeNet
  • 卷積神經網絡概述
  • [CNN] 卷積、反卷積、池化、反池化
  • Receptive field(感受野)
  • 深度學習的本質
  • 三個月教你從零入門深度學習

繼續閱讀