先看一個二維濾波器,如下圖所示。濾波器是一個3x3的矩陣,輸入數(shù)據(jù)是一個5x5的矩陣。輸入矩陣中的紅色方框(下文稱之為滑窗)是一個激活區(qū)域(ActiveRegion),這個區(qū)域的大小與濾波器大小一致,均為3x3方陣。激活區(qū)域與濾波器對應(yīng)系數(shù)相乘并相加即獲得對應(yīng)的輸出(這里是矩陣元素對應(yīng)相乘相加,不是矩陣乘法)。緊接著,滑窗右移一格,得到新的激活區(qū)域,再次與濾波器對應(yīng)元素相乘相加獲得第2個輸出。這里滑窗的步進為1。當(dāng)滑窗右側(cè)邊緣與輸入數(shù)據(jù)右側(cè)邊緣重合時,滑窗重新回到輸入數(shù)據(jù)最左側(cè)邊緣并下移一格。由此可見,滑窗在兩個維度都會移動。
濾波與卷積本質(zhì)上是一致的?;叵胍痪S濾波器或者說一維卷積運算。輸入數(shù)據(jù)在時間維度上依次進入卷積窗口。當(dāng)前的輸出取決于濾波器系數(shù)和卷積窗內(nèi)的輸入數(shù)據(jù),執(zhí)行的運算也是相乘相加。至此,可以看到二維濾波器只是卷積窗由一維變?yōu)槎S,同時,輸入數(shù)據(jù)也由一維變?yōu)槎S。 相乘相加是否可以轉(zhuǎn)換成矩陣乘呢?答案是肯定的。以下圖為例。首先,我們把每個激活區(qū)域的輸入數(shù)據(jù)取出來由二維矩陣變?yōu)橐痪S行向量?;安竭M為1,共4個激活區(qū)域,所以可得到4個一維向量。這4個一維向量構(gòu)成一個4x9的二維矩陣。其次,我們將濾波器按照先行再列的方式“拉直”,構(gòu)成一個一維列向量,這個列向量維度為9x1。顯然,這時4個激活區(qū)域構(gòu)成的矩陣與濾波器系數(shù)構(gòu)成的列向量是可乘的,滿足了矩陣乘法的要求。之后就可以直接執(zhí)行矩陣乘法獲得輸出結(jié)果。
CNN中的卷積運算本質(zhì)上就算二維濾波器,是矩陣對應(yīng)元素相乘相加。但在工程實現(xiàn)時,則將其采用上圖所示方法轉(zhuǎn)變?yōu)榫仃嚦朔?,從而提高運算效率。
原文標(biāo)題:卷積神經(jīng)網(wǎng)絡(luò)中會什么會有矩陣乘法?
文章出處:【微信公眾號:Lauren的FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
濾波器
+關(guān)注
關(guān)注
160文章
7709瀏覽量
177509 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4749瀏覽量
100433
原文標(biāo)題:卷積神經(jīng)網(wǎng)絡(luò)中會什么會有矩陣乘法?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論