深度學習框架介紹


常見的深度學習框架總結:

深度學習框架有:Theano、TensorFlow、Keras、Caff/Caffe2、MXNet、Ptorch等

1.Theano

Theano最初誕生於蒙特利爾大學LISA實驗室,於2008年開始開發,是第一個有較大影響力的Python學習框架。Theano誕生於研究機構,服務於研究人員,其設計具有較濃厚的學士氣息,但在工程設計上有較大的缺陷。其調試困難、構建圖慢等缺點為人所詬病。2017年9月28號,深度學習三巨頭之一Yoshua Bengio 宣布Theano即將停止對其開發。盡管Theano即將退出歷史舞台,但是作為第一個Python學習框架,它很好的完成了自己的使命,為深度研究人員的早期拓荒提供了極大的幫助,同時也為之后深度學習框架的開發點奠定了基本設計方向:以計算圖為架構的核心,采用GPU計算。

2.TensorFlow

TensorFlow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來。Google在深度學習領域巨大的影響力和強大的推廣能力,使得TensorFlow一經推出就獲得了極大的關注,並迅速成為如今用戶最多的深度學習框架。雖然TensorFlow是當前最流行的深度學習框架同時TensorFlow獲得了極大的成功,但是對它的批評也不覺於耳,總結起來有:1.過於復雜的系統 2.頻繁變動的接口 3.接口設計過於晦澀難懂 4.文檔混亂脫節。另外即使ThensorFlow已經成為了如今最炙手可熱的深度學習框架,但是TensorFlow離其最初的設計目標還很遙遠。另外,Google對TensorFlow略顯嚴格的把控,目前各大公司都在研發自己的深度學習框架。

3.Keras

Keras是一個高級的神經網絡API,由純的Python編寫而成並使用TensorFlow、Theano及CNTK作為后端。嚴格意義上來講,Keras並不能稱為一個深度學習框架,它更像是一個深度學習接口,它構建於第三方框架之上。Keras應該是深度學習中最容易上手的一個,但是其多度的封裝導致其喪失靈活性,由於做了層層封裝導致用戶在新增操作或是獲取底層的數據信息時過於困難。同時,過度封裝也使得Keras的程序過於緩慢,在絕大場景中,Keras是所有深度學習框架中速度最慢的。學習Keras是十分容易的,但是很快學習就會遇到相應的瓶頸。

4.Caff/Caffe2

Caffe:Convolutional Architecture for Fast Feature Embedding,它是一個清晰、高效的深度學習框架,核心的語言是C++,它支持Python和Matlab接口,既可以在CPU,也可以在GPU上運行。Caffe的優點是簡潔快捷,缺點是缺少靈活性 。不同於Keras因為太多的封裝而喪失靈活性,Caffe靈活性的缺失主要是因為它的設計。在Caff中最主要的抽象對象是層,每實現一個新的層,必須要利用C++實現它的前向傳播和反向傳播的代碼,而如果想要新層運行在GPU上,那么還需要利用CUDA實現這一層的前向傳播和反向傳播。這對於不熟悉C++和CUDA的用戶擴展Caffe是十分困難的。盡管Caffe曾今幾乎占據了深度學習框架的半壁江山,但是在真正深度學習時代來臨之時,Caffe已經表現出了力不從心,盡管現在在GitHub上還能找到許多基於Caffe的項目,但是新的項目已近越來越少。盡管Caffe的作者之后后在Caffe的基礎上開發了Caffe2,Caffe2繼承了Caffe2的優點,但是在速度上有了很大的改進。Caffe2的設計追求輕量級,在保有擴展性和性能的同時,Caffe2也強調了便攜性 。雖然如今Caffe已經很少用於學術界,但是依然有少數的計算機視覺的論文使用的是Caffe。由於其穩定、出眾的性能,不少公司依然在使用Caffe部署模型。

5.MXNet

MXNet是一個深度學習庫,支出C++、Python、R、Scala、Julia、Matlab及JavaScript等語言;支持命令和符號編程;可以運行在CPU、GPU、集群、服務器、台式機或者移動設備上。

MXNet 以其超強的分布式支持、明顯的內存、現存優化為人所稱道。但是其最初是一群學生開發的,缺乏商業應用,極大的限制了MXNet的使用。同時MXNet長期處於快速迭代的過程,其文檔卻長時間未更新,導致新手用戶難以掌握MXNet,老手常常需要查閱源碼才能真正的理解MXNet接口的用法。

6.Ptorch

Ptorch的Logo解釋:英文Torch是火炬的意思,所以Logo中有火焰。Pytorch是當前難得的簡潔高效快速的框架。在當前開源的框架中沒有一個框架能夠在靈活性、易用性、速度這三個方面有兩個能同時超過Ptorch。Ptorch以其簡潔的代碼、速度上的優勢、易用性以及活躍的社區越來越受到越多人的追捧。用TensorFlow實現的代碼,用Ptorch能輕松實現。如今Ptorch正如其越來越火的社區一樣,越發充滿生命力,深度學習時代Ptorch必將引領深度學習。

雖然Pytorch采用了動態圖給使用者帶來了極大的靈活性,但是事物總是具有兩方面的,動態圖也不是十全十美的。有許多針對動態的批評者認為動態圖不能像靜態計算圖那樣進行性能優化。Pytorch 的缺陷根據書本主要有一下三方面:1.分布式並行支持有限 2.難以部署到生產環境。3.某些場景下性能缺失。如今是各個框架並行的時代,每個框架的存在自然有其合理性,“一個框架通知”的思想不僅可能會影響性能,更會無形中加大框架本身的復雜性。研究和生產是兩個相對獨立的環節,指望通過研究的代碼(Ptorch)來指導用於生產環境的有點不切實際。生產環境受到很多因素的制約,其特點決定了與研究有很大的不同。個人認為需要辯證的看待各個框架。

參考深度學習框架 Pytroch入門與實踐


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM