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