先看一個二維濾波器,如下圖所示。濾波器是一個3x3的矩陣,輸入數據是一個5x5的矩陣。輸入矩陣中的紅色方框(下文稱之為滑窗)是一個激活區域(ActiveRegion),這個區域的大小與濾波器大小一致,均為3x3方陣。激活區域與濾波器對應系數相乘并相加即獲得對應的輸出(這里是矩陣元素對應相乘相加,不是矩陣乘法)。緊接著,滑窗右移一格,得到新的激活區域,再次與濾波器對應元素相乘相加獲得第2個輸出。這里滑窗的步進為1。當滑窗右側邊緣與輸入數據右側邊緣重合時,滑窗重新回到輸入數據最左側邊緣并下移一格。由此可見,滑窗在兩個維度都會移動。
濾波與卷積本質上是一致的。回想一維濾波器或者說一維卷積運算。輸入數據在時間維度上依次進入卷積窗口。當前的輸出取決于濾波器系數和卷積窗內的輸入數據,執行的運算也是相乘相加。至此,可以看到二維濾波器只是卷積窗由一維變為二維,同時,輸入數據也由一維變為二維。 相乘相加是否可以轉換成矩陣乘呢?答案是肯定的。以下圖為例。首先,我們把每個激活區域的輸入數據取出來由二維矩陣變為一維行向量。滑窗步進為1,共4個激活區域,所以可得到4個一維向量。這4個一維向量構成一個4x9的二維矩陣。其次,我們將濾波器按照先行再列的方式“拉直”,構成一個一維列向量,這個列向量維度為9x1。顯然,這時4個激活區域構成的矩陣與濾波器系數構成的列向量是可乘的,滿足了矩陣乘法的要求。之后就可以直接執行矩陣乘法獲得輸出結果。
CNN中的卷積運算本質上就算二維濾波器,是矩陣對應元素相乘相加。但在工程實現時,則將其采用上圖所示方法轉變為矩陣乘法,從而提高運算效率。
原文標題:卷積神經網絡中會什么會有矩陣乘法?
文章出處:【微信公眾號:Lauren的FPGA】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
濾波器
+關注
關注
162文章
8022瀏覽量
180630 -
神經網絡
+關注
關注
42文章
4798瀏覽量
102472
原文標題:卷積神經網絡中會什么會有矩陣乘法?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論