TensorFlow、MXNet、Keras如何取舍? 常用深度学习框架对比
作者簡介
魏秀參,曠視科技 Face++ 南京研究院負責人。南京大學 LAMDA 研究所博士,主要研究領域為計算機視覺和機器學習。在相關領域頂級國際期刊如 IEEE TIP、IEEE TNNLS、Machine Learning Journal 等和頂級國際會議如 ICCV、IJCAI、ICDM 等發表論文十余篇,并兩次獲得國際計算機視覺相關競賽冠亞軍。著有《解析深度學習——卷積神經網絡原理與視覺實踐》一書。曾獲 CVPR 2017 最佳審稿人、南京大學博士生校長特別獎學金等榮譽,擔任 ICCV、CVPR、ECCV、NIPS、IJCAI、AAAI 等國際會議 PC member。(個人自媒體:知乎“魏秀參”,新浪微博“Wilson_NJUer”)。
14 深度學習開源工具簡介
自 2006 年 Hinton 和 Salakhutdinov 在 Science 上發表的深度學習論文點燃了最近一次神經網絡復興的“星星之火”,接著, 2012 年 Alex-Net 在 ImageNet 上奪冠又迅速促成了深度學習在人工智能領域的“燎原之勢”。當下深度學習算法可謂主宰了計算機視覺、自然語言學習等眾多人工智能應用領域。 與此同時,與學術研究一起快速發展并駕齊驅的還有層出不窮的諸多深度學習 開源開發框架。本章將向讀者介紹和對比 9 個目前使用較多的深度學習開源框架,供大家根據自身情況“擇優納之”。
14.1 常用框架對比
表 14.2 中從“開發語言”、“支持平臺”、“支持接口”、是否支持“自動求導”、 是否提供“預訓練模型”、是否支持“單機多卡并行”運算等 10 個方面,對包 含 Caffe、 MatConvNet、 TensorFlow、 Theano 和 Torch 在內的 9 個目前最常用的深度學習開源框架進行了對比。
14.2 常用框架的各自特點
14.2.1 Caffe
Caffe 是一個廣為人知、廣泛應用側重計算機視覺方面的深度學習庫,由加州大學伯克利分校 BVLC 組開發,總結來說, Caffe 有以下優缺點:
? 適合前饋網絡和圖像處理; ? 適合微調已有的網絡模型; ? 訓練已有網絡模型無需編寫任何代碼; ? 提供方便的 Python 和 MATLAB 接口;
? 可單機多卡,但不支持多機多卡; ? 需要用 C++/CUDA 編寫新的 GPU 層; ? 不適合循環網絡; ? 用于大型網絡(如, GoogLeNet、 ResNet )時過于繁瑣; ? 擴展性稍差,代碼有些不夠精簡; ? 不提供商業支持; ? 框架更新緩慢,可能之后不再更新。
14.2.2 Deeplearning4j
Deeplearning4j 簡稱 DL4J,是基于JVM、聚焦行業應用且提供商業支持的分布式深度學習框架,其宗旨是在合理的時間內解決各類涉及大量數據的問題。 它與 Hadoop 和 Spark 集成,可使用任意數量的 GPU 或 CPU 運行。 DL4J 是一種適用于各類平臺的便攜式學習庫。開發語言為 Java,可通過調整 JVM 的堆空間、垃圾回收算法、內存管理以及 DL4J 的 ETL 數據加工管道來優化 DL4J 的性能。其優缺點為:
? 適用于分布式集群,可高效處理海量數據; ? 在多種芯片上的運行已經被優化; ? 可跨平臺運行,有多種語言接口; ? 支持單機多卡和多機多卡; ? 支持自動求導,方便編寫新的網絡層; ? 提供商業支持;
? 提供的預訓練模型有限; ? 框架速度不夠快。
14.2.3 Keras
Keras 由谷歌軟件工程師 Francois Chollet 開發,是一個基于 Theano 和 TensorFlow 的深度學習庫,具有一個受 Torch 啟發、較為直觀的 API。其優缺點如下: ? 受 Torch 啟發的直觀;? 可使用 Theano、TensorFlow 和 Deeplearning4j 后端;? 支持自動求導;? 框架更新速度快。
14.2.4 MXNet
MXNet 是一個提供多種 API 的機器學習框架,主要面向 R、Python 和 Julia 等語言,目前已被亞馬遜云服務采用。其優缺點為:? 可跨平臺使用;? 支持多種語言接口;
? 不支持自動求導。
14.2.5 MatConvNet
MatConvNet 由英國牛津大學著名計算機視覺和機器學習研究組 VGG 負責開發,是主要基于 MATLAB 的深度學習工具包。其優缺點為: ? 基于 MATLAB,便于進行圖像處理和深度特征后處理;? 提供了豐富的預訓練模型;? 提供了充足的文檔及教程;
? 不支持自動求導; ? 跨平臺能力差。
14.2.6 TensorFlow
TensorFlow 是 Google 負責開發的用 Python API 編寫,通過 C/C++ 引擎加速的深度學習框架,是目前受關注最多的深度學習框架。它使用數據流圖集成 深度學習中最常見的單元,并支持許多最新的 CNN 網絡結構以及不同設置的 RNN。其優缺點為:? 具備不局限于深度學習的多種用途,還有支持強化學習和其他算法的工具;? 跨平臺運行能力強;? 支持自動求導;
? 運行明顯比其他框架慢;? 不提供商業支持。
14.2.7 Theano
Theano 是深度學習框架中的元老,用 Python 編寫,可與其他學習庫配合使用,非常適合學術研究中的模型開發。現在已有大量基于 Theano 的開源深度學習庫,包括 Keras、Lasagne 和 Blocks。這些學習庫試著在 Theano 有時不夠直觀的接口之上添加一層便于使用的 API。關于 Theano,有如下特點: ? 支持 Python 和 Numpy;? 支持自動求導;? RNN 與計算圖匹配良好;? 高級的包裝(Keras、Lasagne)可減少使用時的麻煩;
? 編譯困難,錯誤信息可能沒有幫助;? 運行模型前需編譯計算圖,大型模型的編譯時間較長; ? 僅支持單機單卡;? 對預訓練模型的支持不夠完善。
14.2.8 Torch
Torch 是用 Lua 編寫帶 API 的科學計算框架,支持機器學習算法。Facebook 和 Twitter 等大型科技公司使用 Torch 的某些版本,由內部團隊專門負責定制自己的深度學習平臺。其優缺點如下:? 大量模塊化組件,容易組合;? 易編寫新的網絡層;? 支持豐富的預訓練模型;? PyTorch 為 Torch 提供了更便利的接口;
? 使用 Lua 語言需要學習成本;? 文檔質量參差不齊;? 一般需要自己編寫訓練代碼(即插即用相對較少)。
本文節選自電子工業出版社博文視點《解析深度學習——卷積神經網絡原理與視覺實踐》第14章,由作者本人和電子工業出版社博文視點授權。由于篇幅考慮,通過文后二維碼訪問各大網上商城購買。
本次活動我們采取文章留言送書的活動。在下周末之前,留言點贊數最高的前 3 名我們將免費贈送本書!圖書由電子工業出版社博文視點提供。
《解析深度學習》全書內容概覽
參考閱讀:
技術原創及架構實踐文章,歡迎通過公眾號菜單「聯系我們」進行投稿。轉載請注明來自高可用架構「ArchNotes」微信公眾號及包含以下二維碼。
總結
以上是生活随笔為你收集整理的TensorFlow、MXNet、Keras如何取舍? 常用深度学习框架对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机视觉】几个计算机视觉库
- 下一篇: TensorFlow版的“Hello W