深度學習入門課:你需要了解的十大框架和選型攻略

2020-12-19 電子產品世界

  深度學習框架是幫助使用者進行深度學習的工具,它的出現降低了深度學習入門的門檻,你不需要從複雜的神經網絡開始編代碼,就可以根據需要使用現有的模型。

本文引用地址:http://www.eepw.com.cn/article/201710/370283.htm

  做個比喻,一套深度學習框架就像是一套積木,各個組件就是某個模型或算法的一部分,使用者可以自己設計和組裝符合相關數據集需求的積木。

  當然也正因如此,沒有什麼框架是完美的,就像一套積木裡可能沒有你需要的那一種積木,所以不同的框架適用的領域不完全一致。

  深度學習的框架有很多,不同框架之間的「好與壞」卻沒有一個統一的標準,因此,當大家要開始一個深度學習項目時,在研究到底有哪些框架具有可用性,哪個框架更適合自己時,卻找不到一個簡明扼要的「說明書」告訴大家從何著手。

  首先,我們先熟悉一下深度學習的框架。

  Caffe

  Caffe是最成熟的框架之一,由Berkeley Vision and Learning Center開發。它是模塊化的,而且速度非常快,並且只需要很少的額外工作就可以支持多個GPU。它使用類似JSON的文本文件來描述網絡架構以及求解器方法。

  此外,在一個可以下載Caffe模型以及網絡權重的網站——「model zoo」中,還可以幫助你快速地準備樣本。但是,需要注意的是,在Caffe框架中,要調整超參數比其他框架更為繁瑣,部分原因是需要為每組超參數單獨定義不同的求解器和模型文件。


  ▲ 使用Caffe編寫的LeNet CNN實現代碼示例

  上圖是LeNet CNN架構的代碼片段,該模型由卷積最大池化(convolution max pooling)和激活層組成的7層卷積網絡構成。

  Deeplearning4j

  Deeplearning4j是由Andrej Karpathy開發的、支持GPU的多平臺框架,它是用Java編寫的,並擁有一個Scala API。Deeplearning4j也是一個成熟的框架(用Lua編寫),在網際網路上有許多可以使用的樣本,並且支持多個GPU。

  Tensorflow

  Tensorflow是一個由谷歌開發的、相對比較新的框架,但已經被廣泛採用。它性能良好,支持多個GPU和CPU。Tensorflow提供了調整網絡和監控性能的工具,就像Tensorboard一樣,它還有一個可用作網絡應用程式的教育工具。

  Theano

  Theano是使用符號邏輯創建網絡的框架,是以Python編寫的,但利用了numpy的高效代碼庫,從而提高了性能,超過了標準的Python。Theano在構建網絡方面有很大的優勢,但是在創造完整的解決方案中則具有比較大的挑戰。Theano將機器學習中使用的梯度計算作為網絡創建的「免費」副產品,對於那些希望更多地關注網絡架構而不是梯度計算的人來說,這可能是有用的。此外,它的文本文件質量也相當不錯。

  但需要提醒大家的一點是,Theano目前已停止更新。

  Lasagne

  Lasagne是用Python編寫的,建立在Theano之上的框架。它是一個相對簡單的系統,能夠使得網絡構建比直接使用Theano更容易。因此,其表現極大地反映了Theano的潛能。

  Keras

  Keras是用Python編寫的框架,可以作為Theano或Tensorflow的後端(如下圖)。這使得Keras在構建完整的解決方案中更容易,而且因為每一行代碼都創建了一個網絡層,所以它也更易於閱讀。此外,Keras還擁有最先進算法(優化器(optimizers)、歸一化例程(normalization routines)、激活函數(activation functions))的最佳選擇。

  需要說明的是,雖然Keras支持Theano和Tensorflow後端,但輸入數據的維度假設是不同的,因此需要仔細的設計才能使代碼支持兩個後端工作。該項目有完備的文本文件,並提供了一系列針對各種問題的實例以及訓練好了的、用於傳輸學習實現常用體系的結構模型。

  在編寫的時候,有消息宣稱Tensorflow將採用Keras作為首選的高級包。其實,這並不奇怪,因為Keras的開發者Francois Chollet本身就是谷歌的軟體工程師。

  ▲ 使用Keras編寫的LeNet CNN實現代碼示例

  MXNet

  MXNet是一個用C ++編寫的深度學習框架,具有多種語言綁定,並支持分布式計算,包括多GPU。它提供對低級結構以及更高級/符號級API的訪問。在性能上被認為可以與Tensorflow、Caffe等在內的其他框架匹敵。GitHub中提供了很多關於MXNet的教程和培訓示例。

  Cognitive Network Toolkit (CNTK)

  CNTK是由微軟開發的框架,並被描述為機器學習的「Visual Studio」。對於那些使用Visual Studio進行編程的人,這可能是一種更溫和、更有效的進入深度學習的方式。

  DIGITS

  DIGITS是由英偉達開發的,一款基於網絡的深層開發工具。在很多方面,它像Caffe一樣,能夠使用文本文件而不是程式語言來描述網絡和參數。它具有網絡可視化工具,因此文本文件中的錯誤更容易被識別出來。此外,它還具有用於可視化學習過程的工具,並支持多個GPU。

  Torch

  Torch是一款成熟的機器學習框架,是用C語言編寫的。它具有完備的文本,並且可以根據具體需要進行調整。由於是用C語言編寫的,所以Torch的性能非常好。

  PyTorch

  PyTorch是Torch計算引擎的python前端,不僅能夠提供Torch的高性能,還能夠對GPU的提供更好支持。該框架的開發者表示,PyTorch與Torch的區別在於它不僅僅是封裝,而是進行了深度集成的框架,這使得PyTorc在網絡構建方面具有更高的靈活性。(如下圖)

  ▲ PyTorch代碼示例和等效方框圖

  Chainer

  Chainer與其他框架有點不同,它將網絡構建視為其計算的一部分。它的開發者介紹說,在這一框架中,大多數工具都是「定義然後運行」,這意味著你要定義架構,然後才能運行它。Chainer嘗試構建並優化其架構,使其成為學習過程的一部分,或者稱之為「通過運行定義」。

  其他

  除了上述的深度學習框架之外,還有更多的專注於具體任務的開源解決方案。例如,Nolearn專注於深度信念網絡(deep belief networks); Sklearn-theano提供了一個與scikit-learn(即Python中一個重要的機器學習的庫)匹配的編程語法,可以和Theano庫配合使用;Paddle則可以提供更好的自然語言處理能力……

  面對如此之多的深度學習框架,使用者該如何做出合適的選擇?對此,LexiconAI的CEO兼創始人Matthew Rubashkin及其團隊通過對不同的框架在計算機語言、教程(Tutorials)和訓練樣本、CNN建模能力、RNN建模能力、架構的易用性、速度、多GPU支持、Keras兼容性等方面的表現對比,總結出了以下圖表:

  | Matthew Rubashkin畢業於加州大學伯克利分校,是UCSF的Insight數據工程研究員和博士生。曾在矽谷數據科學(SVDS)就職,並領導SVDS的深度學習研發團隊進行項目研究,包括在IoT設備上的TensorFlow圖像識別等等。

  值得注意的是,這一結果結合了Matthew Rubashkin團隊在圖像和語音識別應用方面對這些技術的主觀經驗和公開的基準測試研究,並且只是階段性檢測,未囊括所有可用的深度學習框架。我們看到,包括DeepLearning4j、Paddle、Chainer等在內的框架都還未在其列。

  以下是對應的評估依據:

  計算機語言

  編寫框架所使用的計算機語言會影響到它的有效性。儘管許多框架具有綁定機制,允許使用者使用與編寫框架不同的語言訪問框架,但是編寫框架所使用的語言也不可避免地在某種程度上影響後期開發的語言的靈活性。

  因此,在應用深度學習模型時,最好能夠使用你所熟悉的計算機語言的框架。例如,Caffe(C++)和Torch(Lua)為其代碼庫提供了Python綁定,但如果你想更好地使用這些技術,就必須能夠熟練使用C++或者Lua。相比之下,TensorFlow和MXNet則可以支持多語言,即使使用者不能熟練使用C++,也可以很好地利用該技術。


  教程(Tutorials)和訓練樣本

  框架的文本質量、覆蓋範圍以及示例對於有效使用框架至關重要。高質量的文本文件以及待處理的問題的示例將有助於有效解決開發者的問題。完備的文件也表明該工具已經成熟並且在短期內不會改變。

  而不同的深度學習框架之間在教程和訓練樣本的質量和數量的需求方面存在很大的區別。舉例來說,Theano、TensorFlow、Torch和MXNet由於具有很好的文本化教程(documented tutorials),所以非常易於理解和實現。另外,我們還發現,不同的框架在GitHub社區的參與度和活躍度高低不僅可以作為其未來發展的重要指標,同時也可以用來衡量通過搜索StackOverflow或Git報告事件來檢測和修復bug的速度。值得注意的是,在教程數量、訓練樣本以及開發人員和用戶社區方面,TensorFlow的需求量非常非常大(像是一個800磅重的大猩猩一樣的龐然大物)。


  CNN建模能力

  卷積神經網絡(CNN)是由一組不同的層組成,將初始數據量轉換成預定義類分數的輸出分數。是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現,可用於圖像識別、推薦引擎和自然語言處理。此外,CNN還可以用於回歸分析,如自動駕駛車輛轉向角輸出模型等等。CNN建模能力包括幾個功能:定義模型的概率空間、預構建層的可用性以及可用於連接這些層的工具和功能。我們看到,Theano、Caffe和MXNet都具有很好的CNN建模功能,這意味著,TensorFlow能夠很容易地在其InceptionV3模型上進行能力構建,Torch中包括易於使用的時間卷積集在內的優秀的CNN資源,都使得這兩種技術在CNN建模功能上能夠很好地區分開來。

  RNN建模能力

  有別於CNN,遞歸神經網絡(RNN)可以用於語音識別、時間序列預測、圖像字幕和其他需要處理順序信息的任務。由於預先構建的RNN模型不像CNN那樣多,因此,如果你有一個RNN深度學習項目,那麼就必須考慮為特定技術預先實施和開源何種RNN模型,這是非常重要的。例如,Caffe擁有極少的RNN資源,而微軟的CNTK和Torch則擁有豐富的RNN教程和預置模型。雖然TensorFlow也具有一些RNN資源,但TFLearn和Keras中所包含的RNN示例要比使用TensorFlow多得多。

  架構

  為了在特定的框架中創建和訓練新的模型,至關重要的一點是要有一個易於使用而且是模塊化的前端架構。檢測結果表明,TensorFlow、Torch和MXNet都具有直觀的模塊化架構,這使得開發變得簡單並且直觀。相比之下,像Caffe這樣的框架則需要花大量的工作來創建一個新的層。另外,我們還發現由於TensorBoard Web GUI應用程式已經被包含在內,TensorFlow在訓練期間和訓練之後會特別容易調試和監控。

  速度

  在開放原始碼卷積神經網絡(CNN)方面Torch和Nervana擁有基準測試的最佳性能記錄,TensorFlow性能在大多數測試中也「有的一拼」,而Caffe和Theano在這方面則表現得並不突出;在遞歸神經網絡(RNN)方面,微軟則聲稱CNTK的訓練時長最短,速度最快。當然,也有另一項直接針對RNN建模能力速度進行比較的研究表明,在Theano、Torch和TensorFlow中,Theano的表現最好。

  多GPU支持

  大多數深度學習應用程式需要大量的浮點運算(FLOP)。例如,百度的DeepSpeech識別模型需要10秒鐘的ExaFLOPs(百萬兆浮點運算)進行訓練。那可是大於10的18次方的計算量!而作為領先的圖形處理單元(GPU)——如英偉達的Pascal TitanX,每秒可以執行11萬億次浮點運算,在一個足夠大的數據集上訓練一個新的模型需要一周的時間。為了減少構建模型所需的時間,需要多臺機器上的多個GPU。幸運的是,上面列出的大多數技術都提供了這種支持,比如,MXNet就具有一個高度優化的多GPU引擎。

  Keras兼容性

  Keras是一個用於進行快速深度學習原型設計的高級庫,是一個讓數據科學家能夠自如地應用深度學習的工具。Keras目前支持兩個後端——TensorFlow和Theano,並且還將在TensorFlow中獲得正式的支持。

  Matthew Rubashkin建議,當你要開始一個深度學習項目時,首先要評估好自己團隊的技能和項目需求。舉例來說,對於以Python為中心的團隊的圖像識別應用程式,他建議使用TensorFlow,因為其文本文件豐富、性能適宜並且還擁有優秀的原型設計工具。而如果是為了將RNN擴展到具有Lua能力的客戶團隊產品上,他則推薦使用Torch,這是因為它具有卓越的速度和RNN建模能力。

  總而言之,對於大多數人而言,「從零開始」編寫深度學習算法成本非常高,而利用深度學習框架中可用的巨大資源是更有效率的。如何選擇更合適的框架將取決於使用者的技能和背景,以及具體項目的需求。因此,當你要開始一個深度學習項目時,的確值得花一些時間來評估可用的框架,以確保技術價值的最大化。

相關焦點

  • 深度學習入門者選擇開源框架的相關問題
    在上周公開課中,微軟機器學習科學家彭河森博士詳細講述了各大開源框架適用的出場景,課程結束後,我們特地整理了深度學習入門者關注的幾個問題:《AI 從業者該如何選擇深度學習開源框架丨硬創公開課》想學習深度學習開源框架,比如TensorFlow,Caffe,需要掌握哪些 Linux 知識
  • 對比深度學習十大框架:TensorFlow 並非最好?
    他寫道:「我常聽到人們談論深度學習——我該從哪裡開始呢?TensorFlow 是現在最流行的吧?我聽說 Caffe 很常用,但會不會太難了?在 BEEVA Labs,我們常常需要應對許多不同的深度學習庫,所以我希望能夠將我們的發現和感想分享出來,幫助那些剛剛進入深度學習這一美麗世界的人。」
  • 深度| 對比深度學習十大框架:TensorFlow最流行但並不是最好
    在 BEEVA Labs,我們常常需要應對許多不同的深度學習庫,所以我希望能夠將我們的發現和感想分享出來,幫助那些剛剛進入深度學習這一美麗世界的人。」TensorFlow連結:https://www.tensorflow.org/對於那些聽說過深度學習但還沒有太過專門深入的人來說,TensorFlow 是他們最喜歡的深度學習框架,但在這裡我要澄清一些事實。
  • 訓推一體,動靜合一:深度學習框架「天元」出世
    曠視提出的 AI 生產力平臺 Brain++包括深度學習框架(天元 MegEngine)、深度學習雲計算平臺(MegCompute)、以及數據管理平臺(MegData),將算法、算力和數據能力集為一體。本次開源的天元是 Brain++平臺的核心。
  • 你真的了解深度學習框架Caffe嗎?
    Caffe是由伯克利大學的賈楊清等人開發的一個開源的深度學習框架,採用高效的C++語言實現,並內置有Python和MATLAB接口,以供開發人員使用Python或MATLAB來開發和部署以深度學習為核心算法的應用。Caffe適用於網際網路級別的海量數據處理,包括語音,圖片,視頻等多媒體數據。
  • 機器學習者必知的5種深度學習框架
    它通常包含具有許多節點的神經網絡,並且每個節點都有許多需要在學習過程中必須不斷更新的連接。換句話說,神經網絡的每一層都有成百上千個相同的人工神經元在執行相同的計算。因此,神經網絡的結構適用於GPU(圖形處理單元)可以高效執行的計算類型(GPU是專門為並行計算相同指令而設計的)。隨著深度學習和人工智慧在過去幾年的迅速發展,我們也看到了許多深度學習框架的引入。
  • TensorFlow和Caffe、MXNet、Keras等其他深度學習框架的對比
    在下周二(2月28日)雷鋒網硬創公開課欄目將會推出黃文堅老師的公開課《深度學習之經典卷積神經網絡的技術淺析》(點擊了解詳情),歡迎大家報名!Google 近日發布了 TensorFlow 1.0 候選版,這第一個穩定版將是深度學習框架發展中的裡程碑的一步。
  • 關於機器學習,這可能是目前最全面最無痛的入門路徑和資源!
    說它「全面」是因為我為大家梳理了Python及常用庫、機器學習算法、深度學習框架的學習路徑和資源,就算你不打算根據推薦的資源進入更深的學習,讀完文章後,你也應該大致了解機器學習技術的初步輪廓了。 說它「良心」是因為這篇文章我大概構思了一個月,利用工作之餘的時間,陸陸續續寫了兩個星期40餘小時,自己都快把自己寫得無聊和煩躁的那種......
  • 解析:深度學習框架Caffe源碼
    雷鋒網按:本文作者薛雲峰,主要從事視頻圖像算法的研究,於浙江捷尚視覺科技股份有限公司擔任深度學習算法研究員。相信很多小夥伴和我一樣使用了很長時間的Caffe深度學習框架,也非常希望從代碼層次理解Caffe的實現從而實現新功能的定製。本文將從整體架構和底層實現的視角,對Caffe源碼進行解析。
  • 通過對比深度學習各大框架的優缺點尋找最優
    開源的深度學習神經網絡正步入成熟,而現在有許多框架具備為個性化方案提供先進的機器學習和人工智慧的能力。那麼如何決定哪個開源框架最適合你呢?本文試圖通過對比深度學習各大框架的優缺點,從而為各位讀者提供一個參考。你最看好哪個深度學習框架呢?
  • AI開發者看過來,主流移動端深度學習框架大盤點
    近年來,隨著行動裝置的廣泛普及與應用,在行動裝置上使用深度學習技術的需求開始湧現。簡書作者 dangbo 在《移動端深度學習展望》一文中對現階段的移動端深度學習做了相關展望。接下來,雷鋒網(公眾號:雷鋒網) AI 研習社將介紹當前主流的移動端深度學習框架,其中包括移動端三大框架——Facebook、谷歌、蘋果三大巨頭髮布的 Caffe2、TensorFlow Lite、Core ML,新秀 Bender,國產百度 MDL 以及支持移動端的 MXNet,以便剛剛入坑的開發者們對這些框架有初步的了解和認識。
  • 浪潮在美國發布深度學習計算框架Caffe
    打開APP 浪潮在美國發布深度學習計算框架Caffe 工程師9 發表於 2018-05-18 18:03:00 4月6日消息(美國矽谷當地時間
  • 深度學習框架簡史:TF和PyTorch雙頭壟斷,未來十年迎來黃金時期
    在本文中,Waymo 軟體工程師 Lin Yuan 細數了二十一世紀以來深度學習框架的發展歷程,並劃分為了石器、青銅、鐵器、羅馬和工業化時代。過去十年,機器學習(尤其是深度學習)領域湧現了大量算法和應用。在這些深度學習算法和應用湧現的背後,是各種各樣的深度學習工具和框架。
  • 「修煉開始」一文帶你入門深度學習
    深度學習主要由上圖所示的幾個部分組成,想學一個深度學習算法的原理,就看它是什麼樣的網絡結構,Loss 是怎麼計算的,預處理和後處理都是怎麼做的。權重初始化和學習率調整策略、優化算法、深度學習框架就那麼多,並且也不是所有都要掌握,比如深度學習框架,Pytorch 玩的溜,就能應付大多數場景。
  • Facebook發布開源Caffe2深度學習框架,順應跨平臺模型訓練的新趨勢
    北京時間4月19日Facebook在位於聖何塞(San Jose)舉行的F8開發者大會上宣布推出開源Caffe2深度學習框架。Facebook AI平臺工程主管賈揚清(Yangqing Jia)對此發表評論,認為與之前適合進行研究和實驗的PyTorch框架不同,Caffe2更偏向於工業級的移動應用。一直以來,深度神經網絡和人工智慧模型的訓練,包括圖像、視頻、文本和語音等各種信息的處理通常要在數據中心或超級計算機的支持下才能完成。
  • Caffe2 代碼全部併入 PyTorch:深度學習框架格局劇震
    這兩大框架,在整個深度學習框架格局中都極受關注。自 2017 年 1 月發布之後,由於調試、編譯等多方面的優勢,PyTorch 已經成為很多科研機構首選的深度學習框架;而 2017 年 4 月推出的 Caffe 2 則具有可在 iOS、Android 和樹莓派等多種設備上訓練和部署模型的優勢
  • F8 2017 | Facebook 開源全新深度學習框架 Caffe2,讓 AI 從雲端...
    在昨晚開幕的 F8 年度開發者大會上,Facebook 發布了一款全新的開源深度學習框架 Caffe2。按照官網介紹,它最大的特點就是輕量、模塊化和擴展性,即一次編碼,到處運行(和 Java 的宣傳語類似)。說得更直白一點,就是 Caffe2 可以方便地為手機等移動終端設備帶來 AI 加持,讓 AI 從雲端走向終端。
  • TensorFlow、Caffe、Torch 三大深度學習框架被存在安全漏洞
    (《麻省理工科技評論》中英文版APP現已上線,年度訂閱用戶每周直播科技英語講堂,還有科技英語學習社區哦~)近日,奇虎 360 安全研究實驗室的 Qixue Xiao 和 Deyue Zhang,美國喬治亞大學的 Kang Li,以及美國維吉尼亞大學的 Weilin Xu 共同指出
  • 「每周CV論文推薦」深度學習人臉檢測入門必讀文章
    在這個專欄裡,還是本著有三AI一貫的原則,專注於讓大家能夠系統性完成學習,所以我們推薦的文章也必定是同一主題的。人臉圖像是整個圖像處理領域裡面研究時間最長,應用最廣的方向,今天給大家介紹入門深度學習人臉檢測必讀的文章。
  • Facebook宣布開源深度學習框架 Caffe 2
    Facebook宣布開源深度學習框架 Caffe 22017-04-20 19:43出處/作者:環球時報整合編輯:黑目責任編輯:廖俊輝 【PConline 資訊】據英國媒體4月19日報導,在Facebook F8開發者大會上,Facebook宣布開源Caffe2深度學習框架,用於人工智慧模型和應用開發 Caffe2以產品為導向,並致力於智慧型手機上大規模機器學習系統的配置。