演算法分析 Conv卷積運算元

2021-10-12 12:43:27 字數 870 閱讀 9293

目錄

什麼是卷積

效能分析

conv3d-signed

卷積演算法

上圖展示的是一種很簡單粗暴的卷積演算法,姑且稱之為樸素卷積演算法,演算法的形式化描述如下

//輸入: f(n,ci,df,df),卷積核k(co,ci,dk,dk)

//輸出: g(n,co,dg,dg)

用roofline模型(**鏈結)可以定義提公升效能要解決兩個問題

減少記憶體頻寬占用本質上即提公升cache訪問的命中率,減少ram記憶體搬運資料的次數

在以行優先儲存的計算機中,本文開頭的3d卷積計算需要的輸入f和kernel以如上示意圖的次序儲存在ram記憶體中,這種方式簡單直觀,但按照樸素卷積演算法執行會造成大量的cache miss與資料記憶體搬運

conv3d-訪存cache miss示意圖

上面示意圖假想的儲存模型為2層(cache - ram),設cache裡面有4條cache line,每條cache line可以一次讀取連續4個元素,求解輸入 f(2,3,3) 與 k(2,2,2) 卷積,從樸素卷積計算的過程可以看到 ,kernel資料可以一直keep在cache中保持命中,但f的資料由於按行儲存在ram就會發生多次cache無效觸發從ram load資料到cache的過程,從而影響了計算效能,在上圖的假想模型下cache miss的次數計算如下

TensorFlow學習 卷積層conv2d引數

卷積層引數解釋 tf.nn.conv2d input,filter,strides,padding,use cudnn on gpu bool,data format name none input 指定需要做卷積的輸入影象,輸入要求為乙個4維的 tensor 要求輸入型別為 float32 或者f...

tensorflow2建立卷積核Conv2D函式

使用conv2d可以建立乙個卷積核來對輸入資料進行卷積計算,然後輸出結果,其建立的卷積核可以處理二維資料。依次類推,conv1d可以用於處理一維資料,conv3d可以用於處理三維資料。在進行神經層級整合時,如果使用該層作為第一層級,則需要配置input shape引數。在使用conv2d時,需要配置...

反卷積操作Conv2DTranspose

在cnn網路中,輸入影象通過卷積操作提取特徵後,輸出的尺寸常會變小,而有時我們需要將影象恢復到原來的尺寸以便進行進一步的計算 比如 影象的語義分割 那麼我們需要實現影象由小解析度到大解析度的對映的操作,叫做上取樣 upsample 上取樣有多種方法,比如最近鄰插值 nearest neighbor ...