深度學習是機器學習中一種基于對數(shù)據(jù)進行表征學習的方法,作為當下最熱門的話題,谷歌、Facebook、微軟等巨頭紛紛圍繞深度學習做了一系列研究,一直在支持開源深度學習框架的建設。
過去一年間,在這些巨頭的加持下,深度學習框架格局發(fā)生了極大改變:新框架橫空出世,舊的框架也逐漸退出歷史舞臺,而框架與框架之間的聯(lián)系也更加緊密,生態(tài)更為開放。這一年,小編也在時刻關注著這些發(fā)展和變化,下面這些話題,每一個都引起了開發(fā)者此起彼伏的討論:
Facebook 開源 PyTorch,成為 TensorFlow 強敵
Theano 完成歷史使命,功成身退
ONNX 開放平臺橫空出世,力圖促進開放的開發(fā)生態(tài)
CNTK,Keras,MXNet 均迎來重大更新
微軟攜手亞馬遜推出 Gluon 深度學習庫,英特爾推出增強學習框架 Coach
針對移動終端,Caffe2 和 TensorFlow Lite 先后開源
接下來,小編會盤點上述機器學習框架之間的重大發(fā)展和改變,以饗讀者。
Facebook 開源 PyTorch,以風起云涌之勢占領開發(fā)者社區(qū)
2017 年初,F(xiàn)acebook 在機器學習和科學計算工具 Torch 的基礎上,針對 Python 語言發(fā)布了全新的機器學習工具包——PyTorch。PyTorch 實際上是 NumPy 的替代,它支持 GPU,有著更高級的功能,可以用來構建和訓練深度神經(jīng)網(wǎng)絡。一經(jīng)發(fā)布,它便受到廣泛關注和討論。經(jīng)過將近一年的發(fā)展,目前 PyTorch 已經(jīng)成為從業(yè)者最重要的研發(fā)工具之一。
年初發(fā)布 PyTorch 時,F(xiàn)acebook 曾表示,「它有望輔助、或在一定程度上替代現(xiàn)有的 Python 數(shù)學庫(比如 NumPy)?!鼓壳皝砜?,PyTorch 的使用越來越廣泛,這一預言成為現(xiàn)實。
在眾多開發(fā)者眼中,PyTorch 是 TensorFlow 之外一個非常好的選擇。
以下為 PyTorch 主要優(yōu)勢:
它處于機器學習第一大語言 Python 的生態(tài)圈之中,使得開發(fā)者能接入廣大的 Python 庫和軟件。因此,Python 開發(fā)者能夠用他們熟悉的風格寫代碼,而不需要針對外部 C 語言或 C++ 庫的 wrapper,使用它的專門語言。
不需要從頭重新構建整個網(wǎng)絡,它為改進現(xiàn)有的神經(jīng)網(wǎng)絡提供了更快速的方法——采用動態(tài)計算圖(dynamic computational graph)結(jié)構,而不是大多數(shù)開源框架,比如 TensorFlow、Caffe、CNTK、Theano 等采用的靜態(tài)計算圖。
PyTorch 中用于數(shù)據(jù)加載的 API 設計得很好。接口在數(shù)據(jù)集、采樣器和數(shù)據(jù)加載器中有明確規(guī)定。數(shù)據(jù)加載器接收數(shù)據(jù)集和采樣器,根據(jù)采樣器的調(diào)度,在數(shù)據(jù)集上生成迭代器。加載并行數(shù)據(jù)就像把 num_workers 語句傳遞到數(shù)據(jù)加載器一樣簡單。
采用了定制的 GPU 內(nèi)存分配器。這使得開發(fā)者的深度學習模型能夠有「最大限度的內(nèi)存效能」,訓練比從前更大的深度神經(jīng)網(wǎng)絡。
GitHub 地址:https://github.com/pytorch/pytorch
#pTensorFlow引入動態(tài)圖機制#e#
TensorFlow 遇強敵,引入動態(tài)圖機制等多個更新
TensorFlow 是 Google 于 2015 年底推出的深度學習框架。過去兩年間,它在開發(fā)者社區(qū)享有盛譽,目前已成為最為常用的深度學習框架。它的功能全,社區(qū)好,因此使用率也一直穩(wěn)定保持領先。而隨著 PyTorch 等框架的橫空出世,因為文檔和接口混亂,使用繁瑣等缺點,TensorFlow 廣受詬病。
在 2017 年,開發(fā)團隊不斷為 TensorFlow 引入新的功能:年初發(fā)布 TensorFlow 1.0,實現(xiàn)對 Keras 的全面支持;年底引入 Eager Execution 動態(tài)圖機制,讓開發(fā)變得更加簡單和直觀。
以下為 TensorFlow 被大家廣為稱贊的優(yōu)點:
TensorFlow 的 Saver 對象很容易使用,并為檢查點(check-pointing)提供了更多選擇。
在序列化中,TensorFlow 的主要優(yōu)點是可以將整個圖保存為協(xié)議緩沖區(qū)。這包括參數(shù)和運算。此外,該圖可以通過其他支持的語言 (C++,Java) 加載。這對不支持 Python 的調(diào)度棧來說至關重要。理論上,在改變模型源代碼之后,你想要運行舊模型時它也能有所幫助。
支持移動和嵌入式部署,雖然將 TensorFlow 部署到 Android 或 iOS 上需要大量的工作,但不必用 Java 或 C++重寫模型的整個推理程序。
此外,TensorFlow Serving 支持高性能的服務器端部署,可以支持用戶輕松地換用模型而不會降低服務性能。
另外,它在年底引入 Eager Execution——一種命令式、由運行定義的接口,一旦從 Python 被調(diào)用可立即執(zhí)行操作,這使得 TensorFlow 的入門學習變得更簡單,也使得研發(fā)工作變得更直觀。
GitHub 地址:https://github.com/tensorflow/tensorflow
評論