思考 神經網路層 的 功能識別

2021-08-14 08:26:42 字數 3284 閱讀 5826

卷積操作 即為 一系列 濾波操作 之和 。有關卷積的概念,具體可參加我的這篇文章:深度學習: convolution (卷積) 。

zeiler 和 fergus 兩位大佬在他們獲得eccv2014最佳**提名獎的**《visualizing and understanding convolutional networks》中,就對各卷積層生成的 feature map(特徵圖)展開了視覺化**

但是他們卻沒有對各卷積層的 卷積核展開功能規律性 總結

初始化後的深度學習模型的訓練就像乙個嬰孩。

在訓練過程中,各網路層總數不變,但在梯度下降的引導下,不斷分化成各種功能層。各功能層協作,使得模型成熟而強大。

而每個神經網路層的卷積核,其實就是一系列的 filter(濾波器)集合

(關於不同型別的filter,可參見我之前在github上開源的乙個repo:image_filter )

訓練好的模型中,各層 的 卷積核 引數 初看起來像是一塊亂序的tensor。

但是,通過某種卷積操作(即濾波操作)以實現該特徵 的 抽取功能,那麼所用到的卷積核(即filter集合)一定會近似於某種filter集合。

通俗點講,既然他們能分化成各種功能層,意味著他們一定會長得越來越像該功能所對應的filter集合

例如,如果該功能層80%的功能是實現邊緣提取,那麼它的卷積核一定長得像加長版的邊緣濾波器。

各種邊緣濾波器,長得又都極其類似(**擷取自image_filter):

def

edge_detection_360_degree_filter

():# edge_detection_360° filter 360°邊緣檢測 濾波 (抽取 邊緣特徵)

filter_0 = np.array([[[-1,0,0],[-1,0,0],[-1,0,0]],

[[-1,0,0],[8,0,0],[-1,0,0]],

[[-1,0,0],[-1,0,0],[-1,0,0]]],

dtype=np.int16)

filter_1 = np.array([[[0,-1,0],[0,-1,0],[0,-1,0]],

[[0,-1,0],[0,8,0],[0,-1,0]],

[[0,-1,0],[0,-1,0],[0,-1,0]]],

dtype=np.int16)

filter_2 = np.array([[[0,0,-1],[0,0,-1],[0,0,-1]],

[[0,0,-1],[0,0,8],[0,0,-1]],

[[0,0,-1],[0,0,-1],[0,0,-1]]],

dtype=np.int16)

return filter_0, filter_1, filter_2

defedge_detection_45_degree_filter

():# edge_detection_45° filter 45°邊緣檢測 濾波 (抽取 邊緣特徵)

filter_0 = np.array([[[-1,0,0],[0,0,0],[0,0,0]],

[[0,0,0],[2,0,0],[0,0,0]],

[[0,0,0],[0,0,0],[-1,0,0]]],

dtype=np.int16)

filter_1 = np.array([[[0,-1,0],[0,0,0],[0,0,0]],

[[0,0,0],[0,2,0],[0,0,0]],

[[0,0,0],[0,0,0],[0,-1,0]]],

dtype=np.int16)

filter_2 = np.array([[[0,0,-1],[0,0,0],[0,0,0]],

[[0,0,0],[0,0,2],[0,0,0]],

[[0,0,0],[0,0,0],[0,0,-1]]],

dtype=np.int16)

return filter_0, filter_1, filter_2

相同功能的網路層,所對應的卷積核一定長得彼此類似

通過總結出 各類 功能層 對應的「卷積核 大眾臉」(即該型別卷積核的引數慣常分布),即可找出規律。

可用於對 訓練好的神經網路層進行功能識別

首先,總結出常用的幾類功能濾波器(例如顏色特徵抽取、邊緣特徵抽取、紋理特徵抽取、肢幹特徵抽取、整體特徵抽取)。

其次,對要進行識別的網路層,輸入該層訓練好的卷積核。

接著,對維度進行歸一化,以保證要識別的 tensor 有一致的size。

然後,將預處理過的待識別卷積核常用的 幾類功能濾波器進行相似度比較(比如通過 l2

損失函式,求得各位置上對應引數值的距離損失)。

通過比較各損失情況,得出該卷積核的功能分類概率

舉例如下圖:

顏色特徵提取

邊緣特徵提取

紋理特徵提取

肢幹特徵提取

整體特徵提取

2%10%

80%8%2%

最後,通過最大概率,判定該功能層為紋理特徵提取層(或通過大於10%概率閾值的篩選方法,判定其為80%紋理+10%邊緣 的 特徵提取層)。

卷積神經網路 卷積神經網路啟用層

在生物意義上的神經元中,只有前面的樹突傳遞的訊號的加權和值大於某乙個特定的閾值的時候,後面的神經元才會被啟用。簡單的說啟用函式的意義在於判定每個神經元的輸出 放在人臉識別卷積神經網路中來思考,卷積層的啟用函式的意義在於這一塊區域的特徵強度如果沒有達到一定的標準,就輸出0,表明這種特徵提取方式 卷積核...

神經網路的隱藏層

通常,卷積神經網路除了輸入和輸出層之外還有四個基本的神經元層,在三層神經網路中,這基層被稱為隱藏層 卷積層 convolution 啟用層 activation 池化層 pooling 完全連線層 fully connected 卷積層在最初的卷積層中,成千上萬的神經元充當第一組過濾器,搜尋影象中的...

單隱藏層神經網路(mnist手寫數字識別

1 載入資料 import numpy as np import tensorflow as tf import tensorflow.examples.tutorials.mnist.input data as input data 讀取mnist資料 mnist input data.read ...