卷積神經網絡
下面是LeNet,最早的卷積神經網絡之一
卷積神經網絡其實和傳統神經網絡一脈相承寫出卷積的運算步驟,只是多了很多元素,比如激勵層(非線性)、卷積層(細化特征)等。卷積神經網絡計算過程的動畫如下
卷積
原則
卷積有兩部分,一是圖像,二是卷積核。 卷積核對圖像進行平移卷積計算并輸出新圖像的過程就是卷積。 我們看一下接下來的卷積過程的動畫。
其實圖像的卷積和信號系統的卷積類似。我們知道,在信號系統中,卷積的定義如下
卷積的過程就是將其中一個函數翻轉,然后平移乘以計算每個點的卷積值。 那么圖像上的卷積核就是g(x,y)寫出卷積的運算步驟,圖像上就是f(x,y)。 理論上,卷積核g(x,y)需要進行上、下、左、右翻轉,但在實際操作中為什么不做翻轉動作呢? 這是因為當我們做卷積神經網絡時,初始的卷積核是一個隨機值,而卷積核的值是由整個系統的過程生成的。 由于初始值是隨機的,所以是否翻轉沒有意義。 最終整個系統損失函數值最小時得到的卷積核本質上就是翻轉后的值。 實際上,卷積核可以被視為圖像濾波器。
卷積過程動畫
卷積神經網絡的卷積具體計算是對卷積核與圖像值進行點積運算,得到對應的像素值。 與卷積相關的參數包括,,卷積核大小,各種情況下的卷積過程如下動畫所示。
輸出圖像尺寸計算
卷積常常通過減小圖像的尺寸、降低維數來收集特征。 這是一種下采樣。 輸出圖像尺寸與這些參數的關系如下:
N = (W ? F + 2P )/S+1
在實踐中,深度學習平臺通常會自動計算它。 例如,它提供兩種模式:有效模式和相同模式。 在有效模式 = 0 時,某些像素可能不參與卷積。 相同模式下,所有像素都可以通過在其周圍添加0來參與卷積。 平臺會自動計算價值。 這兩種模式對應的輸出圖像尺寸如下:
輸出圖像的通道數
輸出圖像的通道數等于卷積核的輸出通道數。
池化
池化也是一種下采樣技術
反卷積
反卷積是一種用于降維的上采樣技術。 例如,在裁剪圖像時,需要恢復原始圖像大小Mask。反卷積的計算過程與卷積類似,只不過是將原始圖像通過零填充進行擴展,然后再次進行卷積。 最終的結果是輸出圖像變大。 執行動畫如下
metal卷積碼實現分析
形狀
下面的代碼會涉及到Shape。 我們這里用一段代碼來同步形狀的概念。
x = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]])#輸出數組的行數和列數數組 print x .shape #結果: (4, 3)
metal 中的圖像數據存儲結構
代碼實現分析
我們來看看如何通過metal實現3x3卷積
186信息網原創文章,轉載請注明本文來自:www.yjdjwpb.cn