二維卷積的演算法原理比較簡單,參考隨意一本數字訊號處理的書籍,而matlab的conv2函式的濾波有個形狀引數,用以下的一張圖非常能說明問題:
這裡給出一種最原始的實現方案。這樣的實現對於資料矩陣大小為1000x1000,卷積核矩陣大小為20x20,在我的機器上須要大約1秒鐘的時間。而matlab採用的mkl庫最快僅僅須要將近0.1s的時間。
以下的**用到了自己眼下開發的fastiv中的一些函式介面。詳細**例如以下:
#include "fiv_core.h"
typedef enumfiv_conv_shape;
void fiv_conv2(fivmat** dst_mat, fivmat* src_mat, fivmat* kernel_mat, fiv_conv_shape shape)
ptr_dst_mat = fiv_create_mat(dst_row, dst_cols, fiv_64fc1);
*dst_mat = ptr_dst_mat;
for (i = 0; i < dst_row; i++)
}
ptr_dst_line_i[j] = sum;
} }}fiv_aligned(16) ivf64 ker_data[4*4] = ;
void test_conv2()
int main()
眼下fastiv中的實現已經經過優化,最高速度在我的機器上已經超越matlab。 MATLAB conv2卷積的實現
matlab conv2卷積的實現 這裡給出一種最原始的實現方案。這種實現對於資料矩陣大小為1000x1000,卷積核矩陣大小為20x20,在我的機器上需要大約1秒鐘的時間,而matlab採用的mkl庫最快只需要將近0.1s的時間。下面的 用到了自己目前開發的fastiv中的一些函式介面。具體 如下...
1 1卷積核的作用
如何理解跨通道的資訊互動和整合呢?首先還得從三維卷積的計算開始。如圖所示,藍色部分是乙個7 7 n 維數 的feature map,黃色塊為3 3 3的卷積核,將卷積核對應到藍色特徵中可以得到乙個紅色陰影區域,舉個具體的例子 假設卷積核所有的引數都為1。那麼紅色部分的數值 1 1 4 1 3 1 2...
卷積神經網路中的1 1卷積
我們都知道,卷積核的作用在於特徵的抽取,越是大的卷積核尺寸就意味著更大的感受野,當然隨之而來的是更多的引數。早在1998年,lecun大神發布的letnet 5模型中就會出,影象空域內具有區域性相關性,卷積的過程是對區域性相關性的一種抽取。但是在學習卷積神經網路的過程中,我們常常會看到一股清流般的存...