8 種主流深度學習框架介紹

**導讀:**近幾年隨着深度學習算法的發展,出現了許多深度學習框架。這些框架各有所長,各具特色。常用的開源框架有 TensorFlow、Keras、Caffe、PyTorch、Theano、CNTK、MXNet、PaddlePaddle、Deeplearning4j、ONNX 等。

作者:謝佳標

來源:大數據 DT(ID:hzdashuju)

下面開始對各框架進行概述,讓讀者對各個框架有個簡單的認知,具體的安裝及使用方法不在本文贅述。

01 TensorFlow

谷歌的 TensorFlow 可以說是當今最受歡迎的開源深度學習框架,可用於各類深度學習相關的任務中。TensorFlow = Tensor + Flow,Tensor 就是張量,代表 N 維數組;Flow 即流,代表基於數據流圖的計算。

TensorFlow 是目前深度學習的主流框架,其主要特性如下所述。

RStudio 提供了 R 與 TensorFlow 的 API 接口,RStudio 官網及 GitHub 上也提供了 TensorFlow 擴展包的學習資料。

02 Keras

Keras 是一個對小白用戶非常友好且簡單的深度學習框架。如果想快速入門深度學習, Keras 將是不錯的選擇。

Keras 是 TensorFlow 高級集成 API,可以非常方便地和 TensorFlow 進行融合。Keras 在高層可以調用 TensorFlow、CNTK、Theano,還有更多優秀的庫也在被陸續支持中。Keras 的特點是能夠快速搭建模型,是高效地進行科學研究的關鍵。

Keras 的基本特性如下:

RStudio 提供了 R 與 Keras 的 API 接口,RStudio 的官網及 GitHub 上也提供了 Keras 擴展包的學習資料。

03 Caffe

Caffe 是由 AI 科學家賈揚清在加州大學伯克利分校讀博期間主導開發的,是以 C++/CUDA 代碼爲主的早期深度學習框架之一,比 TensorFlow、MXNet、PyTorch 等都要早。Caffe 需要進行編譯安裝,支持命令行、Python 和 Matlab 接口,單機多卡、多機多卡等都可以很方便使用。

Caffe 的基本特性如下。

同時,Caffe 的缺點也比較明顯,主要包括如下幾點。

雖然 Caffe 已經提供了 Matlab 和 Python 接口,但目前不支持 R 語言。caffeR 爲 Caffe 提供了一系列封裝功能,允許用戶在 R 語言上運行 Caffe,包括數據預處理和網絡設置,以及監控和評估訓練過程。該包還沒有 CRAN 版本,感興趣的讀者可以在 GitHub 找到 caffeR 包的安裝及使用的相關內容。

https://github.com/cnaumzik/caffeR

04 PyTorch

PyTorch 是 Facebook 團隊於 2017 年 1 月發佈的一個深度學習框架,雖然晚於 TensorFlow、Keras 等框架,但自發布之日起,其受到的關注度就在不斷上升,目前在 GitHub 上的熱度已經超過 Theano、Caffe、MXNet 等框架。

PyTroch 主要提供以下兩種核心功能:

PyTorch 的主要優點如下。

05 Theano

Theano 誕生於 2008 年,由蒙特利爾大學的 LISA 實驗室開發並維護,是一個高性能的符號計算及深度學習框架。它完全基於 Python,專門用於對數學表達式的定義、求值與優化。得益於對 GU 的透明使用,Theano 尤其適用於包含高維度數組的數學表達式,並且計算效率比較高。

因 Theano 出現的時間較早,後來湧現出一批基於 Theano 的深度學習庫,並完成了對 Theano 的上層封裝以及功能擴展。在這些派生庫中,比較著名的就是本書要學習的 Keras。Keras 將一些基本的組件封裝成模塊,使得用戶在編寫、調試以及閱讀網絡代碼時更加清晰。

06 CNTK

CNTK(Microsoft Cognitive Toolkit)是微軟開源的深度學習工具包,它通過有向圖將神經網絡描述爲一系列計算步驟。在有向圖中,葉節點表示輸入值或網絡參數,其他節點表示其輸入上的矩陣運算。

CNTK 允許用戶非常輕鬆地實現和組合流行的模型,包括前饋神經網絡(DNN)、卷積神經網絡(CNN)和循環神經網絡(RNN、LSTM)。與目前大部分框架一樣,CNTK 實現了自動求導,利用隨機梯度下降方法進行優化。

CNTK 的基本特性如下。

微軟開發的 CNTK-R 包提供了 R 與 CNTK 的 API 接口。感興趣的讀者可以通過以下網址進行學習。

07 MXNet

MXNet 框架允許混合符號和命令式編程,以最大限度地提高效率和生產力。MXNet 的核心是一個動態依賴調度程序,可以動態地自動並行化符號和命令操作。其圖形優化層使符號執行更快,內存效率更高。

MXNet 的基本特性如下。

08 ONNX

ONNX(Open Neural Network eXchange,開放神經網絡交換)項目由微軟、亞馬遜、Facebook 和 IBM 等公司共同開發,旨在尋找呈現開放格式的深度學習模型。ONNX 簡化了在人工智能不同工作方式之間傳遞模型的過程,具有各種深度學習框架的優點。

ONNX 的基本特性如下。

onnx-r 包提供了 R 與 ONNX 的 API 接口。感興趣的讀者可以通過以下網址進行學習。

關於作者:謝佳標,資深 AI 技術專家和數據挖掘專家,擁有超過 14 年的技術研發和管理經驗。精通 Python 和 Keras 等深度學習框架,在數據挖掘和人工智能技術領域有非常深厚的積累。連續 6 年(2017~2022 年)被微軟評爲數據科學和 AI 方向 MVP。資深 R 語言技術專家,“中國現場統計研究會大數據統計分會” 第一屆理事。歷屆中國 R 語言和數據科學大會特邀演講嘉賓,受邀在國內多所高校舉行以數據主題的公益講座。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/likh4sKw_zmp8sL1zT2sSg