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