入门大爆炸式发展的深度学习,你先要了解这6个著名框架
導(dǎo)讀:近幾年,深度學(xué)習(xí)技術(shù)的大爆炸式發(fā)展,除了理論方面的突破外,還有基礎(chǔ)架構(gòu)的突破,這些都奠定了深度學(xué)習(xí)繁榮發(fā)展的基礎(chǔ)。本文將對其中涌現(xiàn)出的幾個著名的深度學(xué)習(xí)平臺進行簡要介紹。
01 Theano
Theano是在BSD許可證下發(fā)布的一個開源項目,是由LISA集團(現(xiàn)MILA)在加拿大魁北克的蒙特利爾大學(xué)開發(fā)的,其是以一位希臘數(shù)學(xué)家的名字命名的。
Theano是一個Python庫,可用于定義、優(yōu)化和計算數(shù)學(xué)表達式,特別是多維數(shù)組(numpy.ndarray)。它的誕生是為了執(zhí)行深度學(xué)習(xí)中的大規(guī)模神經(jīng)網(wǎng)絡(luò)算法,從本質(zhì)上而言,Theano可以被理解為一個數(shù)學(xué)表達式的編譯器:用符號式語言定義程序員所需的結(jié)果,并且Theano可以高效地運行于GPU或CPU中。
在過去很長一段時間內(nèi),Theano是深度學(xué)習(xí)開發(fā)與研究的行業(yè)標準。而且,由于出身學(xué)界,它最初是為學(xué)術(shù)研究而設(shè)計的,這也導(dǎo)致深度學(xué)習(xí)領(lǐng)域的許多學(xué)者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉(zhuǎn)變的標志性事件是:創(chuàng)始者之一的Ian Goodfellow放棄Theano轉(zhuǎn)而去Google開發(fā)Tensorflow了。
盡管Theano已退出歷史舞臺,但作為Python的第一個深度學(xué)習(xí)框架,它很好地完成了自己的使命,為深度學(xué)習(xí)研究人員的早期拓荒提供了極大的幫助,同時也為之后的深度學(xué)習(xí)框架的開發(fā)奠定了基本的設(shè)計方向:以計算圖為框架的核心,采用GPU加速計算。
總結(jié):對于深度學(xué)習(xí)新手,可以使用Theano來練手;但對于職業(yè)開發(fā)者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣布推出全新的機器學(xué)習(xí)開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發(fā),基于Google 2011年開發(fā)的深度學(xué)習(xí)基礎(chǔ)架構(gòu)DistBelief構(gòu)建起來的。
Tensorflow是廣泛使用的實現(xiàn)機器學(xué)習(xí)以及其他涉及大量數(shù)學(xué)運算的算法庫之一。Google幾乎在所有應(yīng)用程序中都使用Tensorflow來實現(xiàn)機器學(xué)習(xí)。例如,如果你使用過Google照片或Google語音搜索,那么你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務(wù)方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的后繼者,不僅因為它們有很大一批共同的開發(fā)者,而且它們還擁有相近的設(shè)計理念:它們都是基于計算圖實現(xiàn)自動微分系統(tǒng)。Tensorflow使用數(shù)據(jù)流圖進行數(shù)值計算,圖中的節(jié)點代表數(shù)學(xué)運算,圖中的邊則代表在這些節(jié)點之間傳遞的多維數(shù)組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公布,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由于Tensorflow使用C++ Eigen庫,所以庫可在ARM架構(gòu)上進行編譯和優(yōu)化。這也就意味著用戶可以在各種服務(wù)器和移動設(shè)備上部署自己的訓(xùn)練模型,而無須執(zhí)行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學(xué)習(xí)框架,Tensorflow獲得了極大成功,但在學(xué)習(xí)過程中讀者需要注意下面這些問題。
由于Tensorflow的接口一直處于快速迭代之中,并且版本之間存在不兼容的問題,因此開發(fā)和調(diào)試過程中可能會出現(xiàn)一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
想要學(xué)習(xí)Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統(tǒng)設(shè)計比較復(fù)雜,因此這將是一個漫長的過程。
代碼層面,對于同一個功能,Tensorflow提供了多種實現(xiàn),這些實現(xiàn)良莠不齊,使用中還存在細微的區(qū)別,請讀者注意,避免入坑。另外,Tensorflow還創(chuàng)造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
總結(jié):憑借著Google強大的推廣能力,Tensorflow已經(jīng)成為當今最為熱門的深度學(xué)習(xí)框架,雖不完美但是最流行,目前,各公司使用的框架也不統(tǒng)一,讀者有必要多學(xué)習(xí)幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發(fā)的深度學(xué)習(xí)框架。它擁有類似于Theano和Tensorflow的數(shù)據(jù)流圖,為多GPU架構(gòu)提供了良好的配置,有著類似于Lasagne和Blocks的更高級別的模型構(gòu)建塊,并且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分布式支持,明顯的內(nèi)存、顯存優(yōu)化為人所稱道。同樣的模型,MXNet往往占用更小的內(nèi)存和顯存,并且在分布式環(huán)境下,MXNet展現(xiàn)出了明顯優(yōu)于其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處于快速迭代的過程中,其文檔卻長時間未更新,這就導(dǎo)致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
總結(jié):MXNet文檔比較混亂導(dǎo)致其不太適合新手入門,但其分布性能強大,語言支持比較多,比較適合在云平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經(jīng)網(wǎng)絡(luò)API,由純Python語言編寫而成,并使用Tensorflow、Theano及CNTK作為后端。Keras為支持快速實驗而生,能夠?qū)⑾敕ㄑ杆俎D(zhuǎn)換為結(jié)果。
Keras應(yīng)該是深度學(xué)習(xí)框架之中最容易上手的一個,它提供了一致而簡潔的API,能夠極大地減少一般應(yīng)用下用戶的工作量,避免用戶重復(fù)造輪子,而且Keras支持無縫CPU和GPU的相互轉(zhuǎn)換。
為了屏蔽后端的差異性,Keras做了層層封裝,導(dǎo)致用戶在新增操作或是獲取底層的數(shù)據(jù)信息時過于困難。同時,過度封裝也使得Keras的程序過于緩慢,許多bug都隱藏于封裝之中。
另外就是學(xué)習(xí)Keras十分容易,但是很快就會遇到瓶頸,因為它缺少靈活性。另外,在使用Keras的大多數(shù)時間里,用戶主要是在調(diào)用接口,很難真正學(xué)習(xí)到深度學(xué)習(xí)的內(nèi)容。
總結(jié):Keras比較適合作為練習(xí)使用的深度學(xué)習(xí)框架,但是因為其過度的封裝導(dǎo)致并不適合新手學(xué)習(xí)(無法理解深度學(xué)習(xí)的真正內(nèi)涵),故不推薦。
項目主頁:
https://keras.io
05 PyTorch
PyTorch是一個Python優(yōu)先的深度學(xué)習(xí)框架,能夠在強大的GPU加速的基礎(chǔ)上實現(xiàn)張量和動態(tài)神經(jīng)網(wǎng)絡(luò)。
PyTorch是一個Python軟件包,其提供了兩種高層面的功能,具體如下。
使用強大的GPU加速的Tensor計算(類似于Numpy)。
構(gòu)建基于tape的autograd系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)。
活躍的社區(qū):PyTorch提供了完整的文檔,循序漸進的指南,作者親自維護論壇以供用戶交流和求教問題。Facebook人工智能研究院(FAIR)對PyTorch提供了強力支持,作為當今排名前三的深度學(xué)習(xí)研究機構(gòu),FAIR的支持足以確保PyTorch獲得持續(xù)的開發(fā)更新,而不至于像許多由個人開發(fā)的框架那樣曇花一現(xiàn)。
如有需要,你也可以復(fù)用你喜歡的Python軟件包(如Numpy、scipy和Cython)來擴展PyTorch。
相對于Tensorflow,PyTorch的一大優(yōu)點是,它的圖是動態(tài)的,而Tensorflow等都是靜態(tài)圖,不利于擴展。同時,PyTorch非常簡潔,方便使用。
總結(jié):如果說TensorFlow的設(shè)計是“Make It Complicated”,Keras的設(shè)計是“Make It Complicated And Hide It”,那么PyTorch的設(shè)計真正做到了“Keep it Simple,Stupid”。
項目地址:
http://pytorch.org/
06 Caffe
Caffe是基于C++語言編寫的深度學(xué)習(xí)框架,作者是中國人賈揚清。它開放源碼(具有Licensed BSD),提供了命令行,以及Matlab和Python接口,清晰、可讀性強、容易上手。
Caffe是早期深度學(xué)習(xí)研究者使用的框架,由于很多研究人員在上面進行開發(fā)和優(yōu)化,因此其現(xiàn)今也是流行的框架之一。Caffe也存在不支持多機、跨平臺、可擴展性差等問題。初學(xué)者使用Caffe時還需要注意下面這些問題。
Caffe的安裝過程需要大量的依賴庫,因此會涉及很多安裝版本問題,初學(xué)者不易上手。
當用戶想要實現(xiàn)一個新的層時,需要用C++實現(xiàn)它的前向傳播和反向傳播代碼,而如果想要新層運行在GPU之上,則需要同時使用CUDA實現(xiàn)這一層的前向傳播和反向傳播。
Caffe2出自Facebook人工智能實驗室與應(yīng)用機器學(xué)習(xí)團隊,但賈揚清仍是主要貢獻者之一。Caffe2在工程上做了很多優(yōu)化,比如運行速度、跨平臺、可擴展性等,它可以看作是Caffe更細粒度的重構(gòu),但在設(shè)計上,其實Caffe2與TensorFlow更像。目前代碼已開源。
總結(jié):至今工業(yè)界和學(xué)界仍有很多人在使用Caffe,而Caffe2的出現(xiàn)為我們提供了更多的選擇。
項目地址:
Caffe:http://caffe.berkeleyvision.org/
Caffe2:https://caffe2.ai/
關(guān)于作者:魏溪含 ,愛丁堡大學(xué)人工智能碩士,阿里巴巴達摩院算法專家,在計算機視覺、大數(shù)據(jù)領(lǐng)域有8年以上的算法架構(gòu)和研發(fā)經(jīng)驗。
涂銘,阿里巴巴數(shù)據(jù)架構(gòu)師,對大數(shù)據(jù)、自然語言處理、圖像識別、Python、Java相關(guān)技術(shù)有深入的研究,積累了豐富的實踐經(jīng)驗。
張修鵬,畢業(yè)于中南大學(xué),阿里巴巴技術(shù)發(fā)展專家,長期從事云計算、大數(shù)據(jù)、人工智能與物聯(lián)網(wǎng)技術(shù)的商業(yè)化應(yīng)用,在阿里巴巴首次將圖像識別技術(shù)引入工業(yè),并推動圖像識別產(chǎn)品化、平臺化。
本文摘編自《深度學(xué)習(xí)與圖像識別:原理與實踐》,經(jīng)出版方授權(quán)發(fā)布。
延伸閱讀《深度學(xué)習(xí)與圖像識別:原理與實踐》
點擊上圖了解及購買
轉(zhuǎn)載請聯(lián)系微信:DoctorData
推薦語:阿里巴巴達摩院算法專家、阿里巴巴技術(shù)發(fā)展專家、阿里巴巴數(shù)據(jù)架構(gòu)師聯(lián)合撰寫,從技術(shù)原理、算法和工程實踐3個維度系統(tǒng)展開,既適合零基礎(chǔ)讀者快速入門,又適合有基礎(chǔ)讀者理解其核心技術(shù);寫作方式上避開了艱澀的數(shù)學(xué)公式及其推導(dǎo),深入淺出。
「大數(shù)據(jù)」內(nèi)容合伙人之「鑒書小分隊」上線啦!
最近,你都在讀什么書?有哪些心得體會想要跟大家分享?
數(shù)據(jù)叔最近搞了個大事——聯(lián)合優(yōu)質(zhì)圖書出版商機械工業(yè)出版社華章公司發(fā)起鑒書活動。
簡單說就是:你可以免費讀新書,你可以免費讀新書的同時,順手碼一篇讀書筆記就行。詳情請在大數(shù)據(jù)公眾號后臺對話框回復(fù)合伙人查看。
有話要說?
Q:?你用過哪些深度學(xué)習(xí)框架?
歡迎留言與大家分享
猜你想看?
這才是真正適合小白的教程:Python有什么用?數(shù)據(jù)化運營怎么做?
最后2天,錯過等1年,這7本計算機經(jīng)典圖書竟然打折了!
一文看懂用R語言讀取Excel、PDF和JSON文件(附代碼)
人民日報喊你學(xué)數(shù)學(xué)!實力不允許?8本書帶你入門
更多精彩?
在公眾號對話框輸入以下關(guān)鍵詞
查看更多優(yōu)質(zhì)內(nèi)容!
PPT?|?報告?|?讀書?|?書單?|?干貨?
大數(shù)據(jù)?|?揭秘?|?Python?|?可視化
AI?|?人工智能?|?5G?|?區(qū)塊鏈
機器學(xué)習(xí)?|?深度學(xué)習(xí)?|?神經(jīng)網(wǎng)絡(luò)
合伙人?|?1024?|?段子?|?數(shù)學(xué)?|?高考
據(jù)統(tǒng)計,99%的大咖都完成了這個神操作
?
覺得不錯,請把這篇文章分享給你的朋友
轉(zhuǎn)載 / 投稿請聯(lián)系:baiyu@hzbook.com
更多精彩,請在后臺點擊“歷史文章”查看
點擊閱讀原文,了解更多
總結(jié)
以上是生活随笔為你收集整理的入门大爆炸式发展的深度学习,你先要了解这6个著名框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业数字化转型与中台建设全攻略:什么阶段
- 下一篇: 9种深度学习算法简介