工欲善其事,必先利其器 編程
你想選哪一個? 如何選?先來介紹下,也許有幫助。。。後端
介紹下幾個名詞:數組
卷積神經網絡(Convolutional Neural Network,CNN)網絡
CNN是一種前饋神經網絡,它的人工神經元能夠響應一部分覆蓋範圍內的周圍單元,且該網絡避免了對圖像的複雜前期預處理,能夠直接輸入原始圖像,對於大型圖像處理有出色表現。主要用來識別位移、縮放及其餘形式扭曲不變性的二維圖形,因爲CNN的特徵檢測層是經過訓練數據進行學習的,因此在使用CNN時,避免了顯式的特徵抽取,而是隱式地從訓練數據中進行學習;再者因爲同一特徵映射面上的神經元權值相同,因此網絡能夠並行學習,這也是卷積網絡相對於神經元彼此相連網絡的一大優點。卷積神經網絡以其局部權值共享的特殊結構在語音識別和圖像處理方面有着獨特的優越性,其佈局更接近於實際的生物神經網絡,權值共享下降了網絡的複雜性,特別是多維輸入向量的圖像能夠直接輸入網絡這一特色避免了特徵提取和分類過程當中數據重建的複雜度。框架
遞歸神經網絡(Recurrent neural Network,RNN)函數
RNN神經網絡是一種節點定向鏈接成環的人工神經網絡。網絡的內部狀態能夠展現動態時序行爲。不一樣於前饋神經網絡的是,RNN能夠利用它內部的記憶來處理任意時序的輸入序列,這讓它能夠更容易處理如不分段的手寫識別、語音識別等。具備更強的動態行爲和計算能力。工具
NumPy(Numeric Python)佈局
一個用Python實現的科學計算包,是Python的一種開源數值計算擴展,包括:一、一個強大的N維數組對象Array;二、比較成熟的(廣播)函數庫;三、用於整合C/C++和Fortran代碼的工具包;四、實用的線性代數、傅里葉變換和隨機數生成函數。提供了許多高級的數值編程工具,可用來存儲和處理大型矩陣,如矩陣數據類型、矢量處理、以及精密的運算庫,是專爲進行嚴格的數字處理而產生。基本能夠認爲NumPy將Python變成了一種免費的更強大的MatLab系統。學習
TensorFlow對象
用於數值計算的使用數據流圖的開源軟件庫。
TensorFlow 是較低級別的符號庫(好比 Theano)和較高級別的網絡規範庫(好比Blocks 和Lasagne)的混合。雖然它是Python 深度學習庫集合的最新成員,不過在Google Brain 團隊支持下,它已是最大的活躍社區了。它支持在多GPUs 上運行深度學習模型,爲高效的數據流水線提供使用程序,並具備用於模型的檢查,可視化和序列化的內置模塊。且TensorFlow支持 Keras(一個很優秀的深度學習庫)。
優勢:由軟件巨頭 Google支持,很是大的社區,低級和高級接口網絡訓練,比基於 Theano配置更快的模型編譯,徹底地多 GPU支持。
Keras
Python 的深度學習庫。支持Convnets(基於GPU實現的卷積神經網絡)、遞歸神經網絡等。在Theano 或者TensorFlow 上運行。
Keras 也許是水平最高,對用戶最友好的庫了。由 Francis Chollet(Google Brain團隊中的另外一個成員)編寫和維護。它容許用戶選擇其所構建的模型是在 Theano上或是在 TensorFlow上的符號圖上執行。Keras的用戶界面受啓發於 Torch。因爲部分很是優秀的文檔和其相對易用性,Keras的社區很是大而且很是活躍。TensorFlow已經與 Keras一塊兒支持內置,因此很快 Keras將是 TensorFlow項目的一個分組。
優勢:可供選擇的 Theano或者 TensorFlow後端,直觀、高級別的端口,更易學習。
缺點:不太靈活。
Caffe
Caffe 起初並非一個通用框架,而僅僅關注計算機視覺,但它具備很是好的通用性。
Caffe 具備很好的 CNN建模能力,可是 RNN資源就少不少,因此它更多的是面向圖像識別、推薦引擎和天然語言識別等方向的應用,不面向其餘深度學習應用諸如語音識別、時間序列預測、圖像字幕和文本等其餘須要處理順序信息的任務。
優勢:良好的CNN建模能力。
缺點:不夠靈活,有限的參考文獻/資源。
CNN 建模能力
卷積神經網絡(CNN)常常被用於圖像識別、推薦引擎和天然語言識別等方向的應用。CNN由一組多層的神經網絡組成,在運行時會將輸入的數據進行預約義分類的評分。CNN也可用於迴歸分析,例如構成自動駕駛汽車中有關轉向角的模型。評價一種框架的 CNN建模能力考慮如下幾個特性:定義模型的機會空間、預構建層的可用性、以及可用於鏈接這些層的工具和功能。其中Theano,Caffe和MXNet都有很好的 CNN建模能力。另外,TensorFlow由於易於創建的 Inception V3模型,PyTorch 由於其豐富的 CNN 資源(易於使用的時間卷積集)使得這兩種框架在 CNN 建模能力上脫穎而出。
RNN 建模能力
循環神經網絡(RNN)經常使用於語音識別,時間序列預測,圖像字幕和其餘須要處理順序信息的任務。目前,Microsoft的 CNTK和 PyTorch 有着豐富的 RNN教程和預構建模型。另外,目前很流行的 TensorFlow中也有一些 RNN 資源,且Keras中更是有不少使用 TensorFlow的 RNN 示例。