卷積神經網路功能測試方法

2021-07-03 01:52:10 字數 1835 閱讀 7464

卷積神經網路(cnn)是在語音和影象識別領域使用非常廣泛的一類神經網路結構[1]。從圖1中可以看到,它包括3類網路層,一類是卷積層,一類是下取樣層,最後是全連線層。cnn的訓練和dnn一樣,也包括前向計算和反向傳播。不過不同的是,dnn是全連線的網路結構,其前向計算和反向傳播的過程相對都比較簡單。但cnn採用的是區域性連線的方式(local receptive field)並且前向計算的過程包括了卷積(convolution)和下取樣(sub-sampling),其反向傳播的過程則更為複雜,對於卷積層和下取樣層,delta的計算都不相同。

圖1. 典型的cnn模型示意圖

在全面了解cnn工作原理的基礎上,我們設計了cnn前向計算階段進行功能驗證的策略,主要包括以下幾塊內容:對於卷積層的驗證,對於下取樣層的驗證,對於全連線層的驗證以及對於cnn整體功能的驗證。

1.1 卷積層驗證過程

矩陣卷積的驗證是乙個大矩陣(feature map)和乙個小矩陣(kernel)進行點乘(element-wise multiply)然後相加得到乙個數值,然後kernel向右移動一位,再次點乘相加。直到kernel在feature map上全部移動一遍,生成的新的矩陣就是矩陣卷積的產物。

以上的這個過程也可以通過快速傅利葉變換(fft)實現。即先對這兩個矩陣進行fft變換,得到的兩個矩陣進行點乘,然後再進行一次反向傅利葉變換。最終生成的產物就是矩陣卷積的產物。

因此傳統上驗證矩陣卷積過程有兩種方法,一種是變換大矩陣(feature map)中的某乙個元素的值,然後觀察生成的矩陣與變換前生成的矩陣相比是否進行了相應位置上的變化。第二種是利用fft實現卷積,觀察實現結果是否有差異。如果沒有則說明原實現正確。

另外,如果rd並沒有自己實現卷積的過程,而是採用cudnn中的庫函式來實現的話,則我們並不需要去驗證卷積的過程。

1.2 下取樣層驗證過程

下取樣就是將卷積產生的矩陣(feature map)進行降低解析度的過程。如在該feature map上採用2*2的矩陣進行pooling(即用2*2矩陣中的均值替換原2*2矩陣(mean-pooling),有時候不一定是均值,比如max-pooling),得到了解析度為原影象1/4的矩陣。下取樣的驗證就是任意取feature map上2*2的矩陣,計算均值,然後觀察生成的feature map相對應的點位和該值是否相等。

1.3      全連線層驗證過程

全連線層的驗證方法就是dnn中提出的分層蛻變測試方法,因此直接可以應用。此處不再贅述。

1.4 cnn整體驗證過程

上面所寫的方法都是從對cnn前向計算過程的分析中推導出來的,因此適用於需要對cnn進行徹底細緻地功能測試的同學。如果不需要對cnn有深入細緻的了解,而只需要知道rd寫的cnn模型有沒有明顯的錯誤。我們可以通過對比測試的方法來進行驗證。

目前市場上能實現cnn的框架主要有以下幾種:caffe, torch, theano。其中caffe是用c/c++實現的,torch是用c++/lua實現的,而theano則是用python實現。綜合多方面因素考慮,我們選擇theano框架[3]來實現cnn。

因此我們的方案是針對待測的cnn模組,我們採用theano實現乙個和它一樣的模型,對於給定的訓練好的權值檔案以及測試資料,觀察兩個模型的輸出是否一致。如果一致,這說明待測的cnn模組無明顯邏輯錯誤。

目前我們已經採用theano開發了針對dnn的對比測試工具。目前我們正在參考dnn的版本來開發cnn的測試對比工具。預計6月中旬左右能開發完成。

[2]notes onconvolutional neural networks. mit. jake bouvrie.

[3]theano programmingguide.2015.

神經網路 卷積神經網路

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

神經網路 卷積神經網路

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

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

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