一天搞懂深度学习—学习笔记2(CNN)
1.卷積神經網絡(convolutional neural network)
當處理圖片的時候,第一層全連接層將會非常大。為什么呢?想像一下,對于一個100 * 100 * 3的圖片,如果第一層神經元個數為1000個,那么將會需要3*10^7+1000個參數,這是很大的一個數字,各位可以感受下。
神經元需要知道整個圖片的信息去找到它的模式么?
答案是否定的,一般來說,對于一類圖片,有一些特征可以唯一標識這一個種類。好比據說人的耳朵有個部位是一個人的標識,而且不會隨著年齡的增大而變化。而且對于輸入的圖片,我們不能擔保它可用對象一定能出現在某個位置,因為我們需要找尋這個位置(這也是很熱門的一個領域,detection)。一旦我們找到這樣一個小范圍,我們可以輸入這個小范圍的圖片信息,減少了各層次間連接的參數。
卷積神經有哪些結構
卷積、池化、卷積、池化、卷積、池化、……、flatten
我們來看一個好看的圖,讓我們更形象的去理解卷積神經網絡。這是卷積神經網絡算法的一個實現中的一張圖片
該圖的輸入是一張28*28大小的圖像,在C1層有6個5*5的卷積核,因為C1層輸出6個(28-5+1)(28-5+1)大小的feature map。然后經過子采樣層,這里假設子采樣層是對卷積層的均值處理(mean pooling), 其實一般還會有加偏置和激活的操作,為了簡化,省略了這兩步,只是對卷積層進行一個采樣的操作。因此S2層輸出的6個feature map大小為(24/2)(24/2).在卷積層C3中,它的輸入是6個feature map,與C1不一樣(C1只有一個feature map,如果是RGB的話,C1會有三個channel)。C3層有12個5*5卷積核,每個卷積核會與上一層的6個feature map分別做卷積(事實上,一般是選擇幾種輸入feature map來做卷積,而不是全部的feature map),然后對這6個卷積結果求和組成一個新的feature map,即該層會有12個大小為(12-5+1)*(12-5+1)的feature map,這個feature map是經過sigmod 函數處理然后結果下一層S4。
再來一張動態圖,讓你們更清楚了解CNN卷積過程
以上代碼塊中的卷積和中的參數是需要學習的,也就是說會給定一個初始值,然后在反復訓練的過程中更新參數。另外想說的是,如果存在全0填充的話,圖片經過巻積層后維度不會降低;沒有的話,就會根據步長大小維度減少。
池化層才是維度降低的關鍵位置,簡單的例子看下圖,池化層的步長和大小決定了維度降低的數量。
flatten見下圖,就是做了一個reshape操作,數據不變,維度改變。
參考文獻:
1. http://blog.csdn.net/zhongkeli/article/details/51854619
2. http://blog.sina.com.cn/s/blog_8e5ce7190102wspj.html
3. http://www.cnblogs.com/hunttown/p/6830581.html
總結
以上是生活随笔為你收集整理的一天搞懂深度学习—学习笔记2(CNN)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery安装和语法
- 下一篇: pgbench