實現自己的卷積神經網路

2021-07-25 17:41:17 字數 2139 閱讀 8895

卷積神經網路(convolutionalneural network,cnn)是人工神經網路的一種。當前已經成為影象和語音識別領域有十分廣泛的應用,特別是在識別位移、縮放及其他形式扭曲不變性的二維圖形方面有十分優異的表現,已經成為乙個十分重要的研究方向。

關於cnn的詳細解釋可以看這裡:

和這篇**:

接下來我將實現乙個卷積神經網路,用來識別mnist資料集中的手寫數字,我會給出每一層的前向和後向推導,以及caffe中的實現和我自己的實現方法,如有什麼錯誤,歡迎指出。

我要設計的網路結構如下圖所示:包含2個卷積層,2個max池化層,2個全鏈結層和1個relu層與乙個softmax層。

下面我來推導一下每層的神經元數目和引數的個數。

1、輸入層:輸入層輸入乙個28*28的。

2、卷積層1:該層使用20個5*5的卷積核分別對輸入層進行卷積,所以包含20*5*5=500個引數權值引數。卷積後邊長為(28-5+1)/1 = 24,故產生20個24*24個map,包含20*24*24 = 11520個神經元。

3、池化(pooling)層1:對上一層每個2*2區域進行降取樣,選取每個區域最大值,這一層沒有引數。降取樣過後每個map的長和寬變為原來的一半。

4、卷積層2:該層使用20*50個5*5的卷積核分別對上一層的每乙個map進行卷積,所以包含20*50*5*5=25000個引數權值引數。卷積後邊長為(12-5+1)/1 = 8,故產生50個8*8個map,包含50*8*8 = 3200個神經元。

5、池化層2:和上乙個池化層功能類似,將8*8的map降取樣為4*4的map。該層無引數。

6、全連線層1:將上一層的所有神經元進行連線,該層含有500個神經元,故一共有50*4*4*500 = 400000個權值引數。

7、relu層:啟用函式層,實現x=max[0,x],該層神經元數目和上一層相同,無權值引數。

8、全連線層2:功能和上乙個全連線層類似,該層共有10個神經元,包含500*10=5000個引數。

9、softmax層:實現分類和歸一化,後面會詳細介紹。

我個人覺得關於這個卷積神經網路比較難以理解的地方:

1、關於第一篇中神經元,如下圖,它一層完成了我們上面2層(全連線層+乙個啟用函式層)的功能,所以,實際中的網路可能和前邊理論中不是一一對應的。

2、卷積層的權值共享是指每乙個map區域性和整體權值共享,具體表現出來就是每乙個map與卷積核進行卷積,卷積核在map上移動map的不同區域性區域之間使用的同乙個卷積核進行計算。而不是多個map使用相同的卷積核。

caffe,全稱convolutional architecture for fast feature embedding,是乙個計算cnn相關演算法的框架,使用caffe,我們可以輕鬆實現自己的卷積神經網路。

在caffe中實現上一節中的網路,其配置檔案如下:

[cpp]view plain

copy

name: 

"lenet"

layer  }  

}  layer   

param   

convolution_param   

bias_filler   

}  }  

layer   

}  layer   

param   

convolution_param   

bias_filler   

}  }  

layer   

}  layer   

param   

inner_product_param   

bias_filler   

}  }  

layer   

layer   

param   

inner_product_param   

bias_filler   

}  }  

layer   

通過前邊的介紹,大致也能看懂其他一些引數的含義,在後面每一層的介紹中我會詳細解釋配置檔案中每乙個引數的含義

卷積神經網路 有趣的卷積神經網路

一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...

神經網路 卷積神經網路

這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...

神經網路 卷積神經網路

1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...