首先了解一下CNN是什麼?卷積神經網絡。
卷積神經網絡,聽起來像是計算機科學、生物學和數學的詭異組合,但它們已經成為計算機視覺領域中最具影響力的革新的一部分。神經網絡在 2012 年嶄露頭角,Alex Krizhevsky 憑借它們赢得了那一年的 ImageNet 挑戰賽(大體上相當于計算機視覺的年度奧林匹克),他把分類誤差記錄從 26% 降到了 15%,在當時震驚了世界。自那之後,大量公司開始将深度學習用作服務的核心。Facebook 将神經網絡用于自動标注算法、谷歌将它用于圖片搜索、亞馬遜将它用于商品推薦、Pinterest 将它用于個性化主頁推送、Instagram 将它用于搜索架構。
然而,應用這些網絡最經典最流行的案例是進行圖像處理。在圖像處理任務中,讓我們看一下如何使用卷積神經網絡進行圖像分類。
CNN在應用中,一般采用GPU加速,請解釋為什麼GPU可以有加速效果,主要加速算法的哪一個部分?
這裡默認gpu加速是指NVIDIA的cuda加速。CPU是中央處理單元,gpu是圖形處理單元,gpu由上千個流處理器(core)作為運算器。執行采用單指令多線程(SIMT)模式。相比于單核CPU(向量機)流水線式的串行操作,雖然gpu單個core計算能力很弱,但是通過大量線程進行同時計算,在數據量很大是會活動較為可觀的加速效果。
具體到cnn,利用gpu加速主要是在conv(卷積)過程上。coNV過程同理可以像以上的向量加法一樣通過cuda實現并行化。具體的方法很多,不過最好的還是利用fft(快速傅裡葉變換)進行快速卷積。NVIDIA提供了cufft庫實現fft,複數乘法則可以使用cublas庫裡的對應的level3的cublasCgemm函數。
GPU加速的基本準則就是“人多力量大”。舉個最簡單的例子,比如說你想計算一個很大很大的數據,用一塊磐鐳1070顯卡,你覺得可能會很慢,這樣你就會疊加使用,再用一塊磐鐳1070顯卡,這樣就可以增加數據的運算能力
磐鐳1070顯卡-深度學習性價比最高的顯卡
CNN說到底主要問題就是計算量大,但是卻可以比較有效的拆分成并行問題。随便拿一個層的filter來舉例子,假設某一層有n個filter,每一個需要對上一層輸入過來的map進行卷積操作。那麼,這個卷積操作并不需要按照線性的流程去做,每個濾波器互相之間并不影響,可以大家同時做,然後大家生成了n張新的譜之後再繼續接下來的操作。既然可以并行,那麼同一時間處理單元越多,理論上速度優勢就會越大。所以,處理問題就變得很簡單粗暴,就像NV那樣,暴力增加顯卡單元數(當然,顯卡的架構、内部數據的傳輸速率、算法的優化等等也都很重要)。
GPU主要是針對圖形顯示及渲染等技術的出衆,而其中的根本是因為處理矩陣算法能力的強大,剛好CNN中涉及大量的卷積,也就是矩陣乘法等,所以在這方面具有優勢。
機器學習的算法一定得經過gpu加速嗎?
不一定。隻有需要大量浮點數計算,例如矩陣乘法,才需要GPU加速。
用CNN對圖像進行分類就是一個需要大量浮點數計算的典型案例,通常需要GPU加速
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!