複製鏈接
請複製以下鏈接發送給好友

深度學習框架

鎖定
在開始深度學習項目之前,選擇一個合適的框架是非常重要的,因為選擇一個合適的框架能起到事半功倍的作用。研究者們使用各種不同的框架來達到他們的研究目的,側面印證出深度學習領域百花齊放。全世界最為流行的深度學習框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
中文名
深度學習框架
外文名
Deep learning framework
所屬學科
計算機科學
特    點
開源

目錄

深度學習框架概況

在深度學習初始階段,每個深度學習研究者都需要寫大量的重複代碼。為了提高工作效率,這些研究者就將這些代碼寫成了一個框架放到網上讓所有研究者一起使用。接着,網上就出現了不同的框架。隨着時間的推移,最為好用的幾個框架被大量的人使用從而流行了起來。 [1]  全世界最為流行的深度學習框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。

深度學習框架框架

深度學習框架PaddlePaddle

飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業務應用為基礎,是中國首個自主研發、功能完備、開源開放的產業級深度學習平台,集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件於一體。截至2022年12月,飛槳已匯聚535萬開發者,服務20萬家企事業單位,基於飛槳開源深度學習平台構建了67萬個模型。開源開放的飛槳已經成為中國深度學習市場應用規模第一的深度學習框架和賦能平台。飛槳助力開發者快速實現AI想法,快速上線AI業務。幫助越來越多的行業完成AI賦能,實現產業智能化升級。 [2]  [5] 
  • 飛槳在業內率先實現了動靜統一的框架設計,兼顧靈活性與高性能,並提供一體化設計的高層API和基礎API,確保用户可以同時享受開發的便捷性和靈活性。
  • 在大規模分佈式訓練技術上,飛槳率先支持了千億稀疏特徵、萬億參數、數百節點並行訓練的能力,並推出業內首個通用異構參數服務器架構,達到國際領先水平。 [3] 
  • 飛槳擁有強大的多端部署能力,支持雲端服務器、移動端以及邊緣端等不同平台設備的高速推理;飛槳推理引擎支持廣泛的AI芯片,已經適配和正在適配的芯片或IP達到29款,處於業界領先地位。
  • 飛槳圍繞企業實際研發流程量身定製打造了大規模的官方模型庫,算法總數達到270多個,服務企業遍佈能源、金融、工業、農業等多個領域。 [4] 

深度學習框架Tensorflow

Google開源的Tensorflow是一款使用C++語言開發的開源數學計算軟件,使用數據流圖(Data Flow Graph)的形式進行計算。圖中的節點代表數學運算,而圖中的線條表示多維數據數組(tensor)之間的交互。Tensorflow靈活的架構可以部署在一個或多個CPU、GPU的台式及服務器中,或者使用單一的API應用在移動設備中。Tensorflow最初是由研究人員和Google Brain團隊針對機器學習和深度神經網絡進行研究而開發,開源之後幾乎可以在各個領域適用。
Tensorflow是全世界使用人數最多、社區最為龐大的一個框架,因為Google公司出品,所以維護與更新比較頻繁,並且有着Python和C++的接口,教程也非常完善,同時很多論文復現的第一個版本都是基於Tensorflow寫的,所以是深度學習界框架默認的老大。 [1] 

深度學習框架Caffe

和Tensorflow名氣一樣大的是深度學習框架Caffe,由加州大學伯克利的Phd賈揚清開發,全稱是Convolutional Architecture for Fast Feature Embedding,是一個清晰而高效的開源深度學習框架,由伯克利視覺中心(Berkeley Vision and Learning Center,BVLC)進行維護。
從它的名字就可以看出其對於卷積網絡的支持特別好,同時也是用C++寫的,提供的C++接口,也提供了matlab接口和python接口。
Caffe之所以流行,是因為之前很多ImageNet比賽裏面使用的網絡都是用Caffe寫的,所以如果你想使用這些比賽的網絡模型就只能使用Caffe,這也就導致了很多人直接轉到Caffe這個框架下面。
Caffe的缺點是不夠靈活,同時內存佔用高,Caffe的升級版本Caffe2已經開源了,修復了一些問題,同時工程水平得到了進一步提高。 [1] 

深度學習框架Theano

Theano於2008年誕生於蒙特利爾理工學院,其派生出了大量的深度學習Python軟件包,最著名的包括Blocks和Keras。Theano的核心是一個數學表達式的編譯器,它知道如何獲取你的結構,並使之成為一個使用numpy、高效本地庫的高效代碼,如BLAS和本地代碼(C++)在CPU或GPU上儘可能快地運行。它是為深度學習中處理大型神經網絡算法所需的計算而專門設計,是這類庫的首創之一(發展始於2007年),被認為是深度學習研究和開發的行業標準。
但是開發Theano的研究人員大多去了Google參與Tensorflow的開發,所以,某種程度來講Tensorflow就像Theano的孩子。 [1] 

深度學習框架MXNet

MXNet的主要作者是李沐,最早就是幾個人抱着純粹對技術和開發的熱情做起來的,如今成了亞馬遜的官方框架,有着非常好的分佈式支持,而且性能特別好,佔用顯存低,同時其開發的語言接口不僅僅有Python和C++,還有R,Matlab,Scala,JavaScript等等,可以説能夠滿足使用任何語言的人。
但是MXNet的缺點也很明顯,教程不夠完善,使用的人不多導致社區不大,同時每年很少有比賽和論文是基於MXNet實現的,這就使得MXNet的推廣力度和知名度不高。 [1] 

深度學習框架Torch

Torch是一個有大量機器學習算法支持的科學計算框架,其誕生已有十年之久,但是真正起勢得益於Facebook開源了大量Torch的深度學習模塊和擴展。Torch的特點在於特別靈活,但是另一個特殊之處是採用了編程語言Lua,在深度學習大部分以Python為編程語言的大環境之下,一個以Lua為編程語言的框架有着更多的劣勢,這一項小眾的語言增加了學習使用Torch這個框架的成本。

深度學習框架PyTorch

PyTorch的前身便是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持動態圖,而且提供了Python接口。它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動態神經網絡,這是很多主流深度學習框架比如Tensorflow等都不支持的。
PyTorch既可以看作加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經網絡。除了Facebook外,它已經被Twitter、CMU和Salesforce等機構採用。 [1] 

深度學習框架應用優勢

深度學習框架的出現降低了入門的門檻,你不需要從複雜的神經網絡開始編代碼,你可以根據需要選擇已有的模型,通過訓練得到模型參數,你也可以在已有模型的基礎上增加自己的layer,或者是在頂端選擇自己需要的分類器和優化算法(比如常用的梯度下降法)。當然也正因如此,沒有什麼框架是完美的,就像一套積木裏可能沒有你需要的那一種積木,所以不同的框架適用的領域不完全一致。 總的來説深度學習框架提供了一系列的深度學習的組件(對於通用的算法,裏面會有實現),當需要使用新的算法的時候就需要用户自己去定義,然後調用深度學習框架的函數接口使用用户自定義的新算法。
參考資料