資源 | 從TensorFlow到PyTorch:九大深度學習框架哪款最適合你?

2021-03-02 機器之心

選自CIO

作者:Mitch De Felice

機器之心編譯

參與:Jane W、黃玉勝

開源的深度學習神經網絡正步入成熟,而現在有許多框架具備為個性化方案提供先進的機器學習和人工智慧的能力。那麼如何決定哪個開源框架最適合你呢?本文試圖通過對比深度學習各大框架的優缺點,從而為各位讀者提供一個參考。你最看好哪個深度學習框架呢?

現在的許多機器學習框架都可以在圖像識別、手寫識別、視頻識別、語音識別、目標識別和自然語言處理等許多領域大展身手,但卻並沒有一個完美的深度神經網絡能解決你的所有業務問題。所以,本文希望下面的圖表和講解能夠提供直觀方法,幫助讀者解決業務問題。

下圖總結了在 GitHub 中最受歡迎的開源深度學習框架排名,該排名是基於各大框架在 GitHub 裡的收藏數,這個數據由 Mitch De Felice 在 2017 年 5 月初完成。

TensorFlow

地址:https://www.tensorflow.org/

TensorFlow 最開始是由谷歌一個稱之為 DistBelief V2 的庫發展而來,它是一個公司內部的深度神經網絡庫,隸屬於谷歌大腦項目。有一些人認為 TensorFlow 是由 Theano 徹底重構而來。

谷歌開源 TensorFlow 後,立即吸引了一大批開發愛好者。TensorFlow 可以提供一系列的能力,例如圖像識別、手寫識別、語音識別、預測以及自然語言處理等。2015 年 11 月 9 號,TensorFlow 在 Apache 2.0 協議下開源發布。

TensorFlow 1.0 版本已於 2017 年 2 月 15 日發布,這個版本是之前 8 個版本的優化改進版,其致力於解決 Tensorflow 之前遇到的一系列問題以及完善一些核心能力。TensorFlow 獲得成功的因素有:

TensorFlow 提供了如下工具:

TensorFlow 編程接口支持 Python 和 C++。隨著 1.0 版本的公布,Java、Go、R 和 Haskell API 的 alpha 版本也將被支持。此外,TensorFlow 還可在谷歌雲和亞馬孫雲中運行。

隨著 0.12 版本的發行,TensorFlow 將支持 Windows 7、 Windows 10 和 Server 2016。由於 TensorFlow 使用 C++ Eigen 庫,所以庫可在 ARM 架構上編譯和優化。這也就意味著你可以在各種伺服器和行動裝置上部署你的訓練模型,而無需執行單獨的模型解碼器或者加載 Python 解釋器。

TensorFlow 支持細粒度的網格層,而且允許用戶在無需用低級語言實現的情況下構建新的複雜的層類型。子圖執行操作允許你在圖的任意邊緣引入和檢索任意數據的結果。這對調試複雜的計算圖模型很有幫助。

分布式 TensorFlow(Distributed TensorFlow)被加進了 0.8 版本,它允許模型並行,這意味著模型的不同部分可在不同的並行設備上被訓練。

自 2016 年 3 月,史丹福大學、伯克利大學、多倫多大學和 Udacity 都將這個框架作為一個免費的大規模在線開放課程進行教授。

TensorFlow 的缺點如下:

TensorFlow 的每個計算流都必須構造為一個靜態圖,且缺乏符號性循環(symbolic loops),這會帶來一些計算困難。

沒有對視頻識別很有用的三維卷積(3-D convolution)。

儘管 TensorFlow 現在比起始版本(v0.5)快了 58 倍,,但在執行性能方面依然落後於競爭對手。

Caffe

地址:http://caffe.berkeleyvision.org/

Caffe 是賈揚清的傑作,目前他在 Facebook AI 平臺擔任首席工程師。Caffe 可能是自 2013 年底以來第一款主流的工業級深度學習工具包。正因為 Caffe 優秀的卷積模型,它已經成為計算機視覺界最流行的工具包之一,並在 2014 年的 ImageNet 挑戰賽中一舉奪魁。Caffe 遵循 BSD 2-Clause 協議。

Caffe 的快速使其完美應用於實驗研究和商業部署。Caffe 可在英偉達單個 K40 GPU 上每天處理 6000 萬張圖像。這大概是 1 毫秒預測一張圖片,4 毫秒學習一張圖片的速度,而且最新的版本處理速度會更快。

Caffe 基於 C++,因此可在多種設備上編譯。它跨平臺運行,並包含 Windows 埠。Caffe 支持 C++、Matlab 和 Python 編程接口。Caffe 擁有一個龐大的用戶社區,人們在其中為被稱為「Model Zoo(https://github.com/BVLC/caffe/wiki/Model-Zoo)」的深度網絡庫做貢獻。AlexNet 和 GoogleNet 就是社群用戶構建的兩個流行網絡。

雖然 Caffe 在視頻識別領域是一個流行的深度學習網絡,但是 Caffe 卻不能像 TensorFlow、CNTK 和 Theano 那樣支持細粒度網絡層。構建複雜的層類型必須以低級語言完成。由於其遺留架構,Caffe 對循環網絡和語言建模的支持總體上很薄弱。

Caffe2 

地址:https://caffe2.ai/ 

目前,賈揚清和他在 Facebook 的團隊正在開發新一代框架 Caffe2。今年 4 月 18 日,Facebook 開源了 Caffe2。Caffe 2 與 Caffe 的區別是什麼?Caffe2 更注重模塊化,在移動端、大規模部署上表現卓越。如同 TensorFlow,Caffe2 使用 C++ Eigen 庫,支持 ARM 架構。

用一個實用腳本,Caffe 上的模型可輕易地被轉變到 Caffe2 上。Caffe 設計的選擇使得它處理視覺類型的難題時很完美。Caffe2 延續了它對視覺類問題的支持,且增加了對自然語言處理、手寫識別、時序預測有幫助的 RNN 和 LSTM 支持。

期待不久之後能看到 Caffe 2 超越 Caffe,就像它宣稱的那樣在深度學習社區流行。

在本周三英偉達推出 Volta 架構的第一塊加速卡 Tesla V100 後,Caffe 的開發者第一時間展示了 Tesla V100 在 Caffe2 上運行 ResNet-50 的評測。數據顯示在新框架和新硬體的配合下,模型每秒鐘可以處理 4100 張圖片。

連結:https://caffe2.ai/blog/2017/05/10/caffe2-adds-FP16-training-support.html

CNTK

連結:https://github.com/Microsoft/CNTK/wiki

微軟的 CNTK(Microsoft Cognitive Toolkit)最初是面向語音識別的框架。CNTK 支持 RNN 和 CNN 類型的網絡模型,從而在處理圖像、手寫字體和語音識別問題上,它是很好的選擇。使用 Python 或 C++ 編程接口,CNTK 支持 64 位的 Linux 和 Windows 系統,在 MIT 許可證下發布。

 與 TensorFlow 和 Theano 同樣,CNTK 使用向量運算符的符號圖(symbolic graph)網絡,支持如矩陣加/乘或卷積等向量操作。此外,像 TensorFlow 和 Theano 一樣,CNTK 有豐富的細粒度的網絡層構建。構建塊(操作)的細粒度使用戶不需要使用低層次的語言(如 Caffe)就能創建新的複雜的層類型。

CNTK 也像 Caffe 一樣基於 C++ 架構,支持跨平臺的 CPU/GPU 部署。CNTK 在 Azure GPU Lab 上顯示出最高效的分布式計算性能。目前,CNTK 不支持 ARM 架構,這限制了其在行動裝置上的功能。

MXNet

連結:http://mxnet.io/

MXNet(發音為 mix-net)起源於卡內基梅隆大學和華盛頓大學的實驗室。MXNet 是一個全功能、可編程和可擴展的深度學習框架,支持最先進的深度學習模型。MXNet 支持混合編程模型(命令式和聲明式編程)和多種程式語言的代碼(包括 Python、C++、R、Scala、Julia、Matlab 和 JavaScript)。2017 年 1 月 30 日,MXNet 被列入 Apache Incubator 開源項目。

MXNet 支持深度學習架構,如卷積神經網絡(CNN)、循環神經網絡(RNN)和其包含的長短時間記憶網絡(LTSM)。該框架為圖像、手寫文字和語音的識別和預測以及自然語言處理提供了出色的工具。有些人稱 MXNet 是世界上最好的圖像分類器。

MXNet 具有可擴展的強大技術能力,如 GPU 並行和內存鏡像、快速編程器開發和可移植性。此外,MXNet 與 Apache Hadoop YARN(一種通用分布式應用程式管理框架)集成,使 MXNet 成為 TensorFlow 有力的競爭對手。

MXNet 不僅僅只是深度網絡框架,它的區別在於支持生成對抗網絡(GAN)模型。該模型啟發自實驗經濟學方法的納什均衡。

Torch 

連結:http://torch.ch/

Torch 由 Facebook 的 Ronan Collobert 和 Soumith Chintala,Twitter 的 Clement Farabet(現任職於英偉達),以及 Google DeepMind 的 Koray Kavukcuoglu 共同開發。很多科技巨頭(如 Facebook、Twitter 和英偉達)都使用定製版的 Torch 用於人工智慧研究,這大大促進了 Torch 的開發。Torch 是 BSD 3 協議下的開源項目。然而,隨著 Facebook 對 Caffe 2 的研究,以及其對行動裝置的支持,Caffe 2 正成為主要的深度學習框架。

Torch 的程式語言為 Lua。Lua 不是主流語言,在開發人員沒有熟練掌握 Lua 之前,使用 Torch 很難提高開發的整體生產力。

Torch 缺乏 TensorFlow 的分布式應用程式管理框架,也缺乏 MXNet 和 Deeplearning4J 對 YARN 的支持。缺乏多種程式語言的 API 也限制了開發人員。

PyTorch

地址:http://pytorch.org/

PyTorch 由 Adam Paszke、Sam Gross 與 Soumith Chintala 等人牽頭開發,其成員來自 Facebook FAIR 和其他多家實驗室。它是一種 Python 優先的深度學習框架,在今年 1 月被開源,提供了兩種高層面的功能:

使用強大的 GPU 加速的 Tensor 計算(類似 numpy)

構建於基於 tape 的 autograd 系統的深度神經網絡

該框架結合了 Torch7 高效靈活的 GPU 加速後端庫與直觀的 Python 前端,它的特點是快速成形、代碼可讀和支持最廣泛的深度學習模型。如有需要,你可以復用你最喜歡的 Python 軟體包(如 numpy、scipy 和 Cython)來擴展 PyTorch。該框架因為其靈活性和速度,在推出以後迅速得到了開發者和研究人員的青睞。隨著 GitHub 上越來越多代碼的出現,PyTorch 作為新框架缺乏資源的問題已經得以緩解。

Deeplearning4J

地址:https://deeplearning4j.org/

Deeplearning4J(DL4J)是用 Java 和 Scala 編寫的 Apache 2.0 協議下的開源、分布式神經網絡庫。DL4J 最初由 SkyMind 公司的 Adam Gibson 開發,是唯一集成了 Hadoop 和 Spark 的商業級深度學習網絡,並通過 Hadoop 和 Spark 協調多個主機線程。DL4J 使用 Map-Reduce 來訓練網絡,同時依賴其它庫來執行大型矩陣操作。

DL4J 框架支持任意晶片數的 GPU 並行運行(對訓練過程至關重要),並支持 YARN(Hadoop 的分布式應用程式管理框架)。DL4J 支持多種深度網絡架構:RBM、DBN、卷積神經網絡(CNN)、循環神經網絡(RNN)、RNTN 和長短時間記憶網絡(LTSM)。DL4J 還對矢量化庫 Canova 提供支持。

DL4J 使用 Java 語言實現,本質上比 Python 快。在用多個 GPU 解決非平凡圖像(non-trivial image)識別任務時,它的速度與 Caffe 一樣快。該框架在圖像識別、欺詐檢測和自然語言處理方面的表現出眾。

Theano

地址:http://deeplearning.net/software/theano/

Theano 由蒙特婁大學算法學習人工智慧實驗室(MILA)維護。以 Theano 的創始人 Yoshua Bengio 為首,該實驗室是深度學習研究領域的重要貢獻者,擁有約 30 至 40 名學生和教師。Theano 支持快速開發高效的機器學習算法,在 BSD 協議下發布。

Theano 的架構如同一個黑箱;整個代碼庫和接口使用 Python,其中 C/CUDA 代碼被打包成 Python 字符串。這使得開發人員很難導航(navigate)、調試和重構。

Theano 開創了將符號圖用於神經網絡編程的趨勢。Theano 的符號式 API 支持循環控制(即 scan),這使得實現 RNN 容易且高效。

Theano 缺乏分布式應用程式管理框架,只支持一種編程開發語言。Theano 是很好的學術研究工具,在單個 CPU 上運行的效率比 TensorFlow 更有效。然而,在開發和支持大型分布式應用程式時,使用 Theano 可能會遇到挑戰。

開源 vs. 非開源

隨著深度學習的不斷發展,我們必將看到 TensorFlow、Caffe 2 和 MXNet 之間的不斷競爭。另一方面,軟體供應商也會開發具有先進人工智慧功能的產品,從數據中獲取最大收益。風險:你將購買非開源的人工智慧產品還是使用開源框架?有了開源工具,確定最適合的深度學習框架也是兩難問題。在非開源產品中,你是否準備了退出策略?人工智慧的收益會隨著工具的學習能力的進步而上升,所以看待這些問題都需要用長遠的觀點。 

原文連結:http://www.cio.com/article/3193689/artificial-intelligence/which-deep-learning-network-is-best-for-you.html

點擊閱讀原文,查看全部嘉賓陣容並報名參與機器之心 GMIS 2017  ↓↓↓

相關焦點

  • 從TensorFlow到PyTorch:九大深度學習框架哪款最適合你?
    那麼如何決定哪個開源框架最適合你呢?本文試圖通過對比深度學習各大框架的優缺點,從而為各位讀者提供一個參考。你最看好哪個深度學習框架呢?現在的許多機器學習框架都可以在圖像識別、手寫識別、視頻識別、語音識別、目標識別和自然語言處理等許多領域大展身手,但卻並沒有一個完美的深度神經網絡能解決你的所有業務問題。所以,本文希望下面的圖表和講解能夠提供直觀方法,幫助讀者解決業務問題。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • PYTORCH與TENSORFLOW:哪種框架最適合您的深度學習項目?
    為了幫助開發這些架構,諸如Google,Facebook和Uber之類的技術巨頭已經發布了適用於Python深度學習環境的各種框架,從而使學習,構建和訓練多樣化的神經網絡變得更加容易。在本文中,我們將研究兩個流行的框架並進行比較:PyTorch與TensorFlow。簡要地比較一下,最常用和依賴的Python框架TensorFlow和PyTorch。
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智慧。本文將手把手帶你快速搭建你自己的深度學習環境,然後實現自己的第一個深度學習程序。野蠻智能,小白也能看懂的人工智慧。Anaconda+pytorch環境準備如果你的電腦帶有GPU,可以先安裝Nvidia驅動 + cuda + cudnn,然後再搭建環境,這樣可以達到更高的運行速度。如果不想使用GPU,學習階段也可以使用cpu版本,對於簡單的程序用CPU和GPU其實沒差別。
  • GitHub趨勢榜第一:TensorFlow+PyTorch深度學習資源大匯總
    來源:Github編輯整理:元子【新智元導讀】該項目是Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構內容非常豐富,適用於Python 3.7,適合當做工具書。本文搜集整理了Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構,模型和技巧,內容非常豐富,適用於Python 3.7,適合當做工具書。大家可以將內容按照需要進行分割,列印出來,或者做成電子書等,隨時查閱。
  • 深度學習環境配置指南:Pytorch、TensorFlow、Keras
    導讀本文介紹了作者使用RTX3090進行深度學習環境配置pytorch、tensorflow、keras等的詳細過程及代碼。筆者中山大學研究生,醫學生+計科學生的集合體,機器學習愛好者。所以自己測了下速度最快的3090配置環境,歡迎補充!
  • RTX 3090 的深度學習環境配置指南:Pytorch、TensorFlow、Keras
    導讀本文介紹了作者使用RTX3090進行深度學習環境配置pytorch、tensorflow、keras等的詳細過程及代碼。筆者中山大學研究生,醫學生+計科學生的集合體,機器學習愛好者。所以自己測了下速度最快的3090配置環境,歡迎補充!
  • 最熱門的深度學習框架TensorFlow入門必備書籍
    但進入機器學習和人工智慧領域並不是一件簡單的事情,目前市場上有許多大量的學習資源,許多開發者和想要進入的愛好者往往很難找到適合自己的發展路徑。其實,早在 2015 年底,谷歌就開源了內部使用的深度學習框架 TensorFlow 。眾多研究表明,Tensorflow 是研究深度學習的首選平臺。
  • 深度學習100+經典模型TensorFlow與Pytorch代碼實現大集合
    【導讀】深度學習在過去十年獲得了極大進展,出現很多新的模型,並且伴隨TensorFlow和Pytorch框架的出現,有很多實現,但對於初學者和很多從業人員
  • 2020,PyTorch真的趕上TensorFlow了嗎?
    其實,這已經不是這位作者第一次調研深度學習框架了。從 2018 年到 2020 年,他先後進行過三次調查研究並發布了相關報告。從這些報告中,我們可以看出深度學習框架在多個維度的熱度演變史。2018:TensorFlow 碾壓 PyTorchJeff Hale 的第一份調研結果發布於 2018 年 9 月。
  • 掌握深度學習,為什麼要用 PyTorch、TensorFlow 框架?
    另一方面,在某些情況下,深度學習或深度遷移學習可以幫助你訓練更準確的模型。在這些情況下,你可以考慮使用PyTorch和TensorFlow,特別是如果你所需的訓練模型與其中一個框架模型庫中的模型類似。PyTorchPyTorch建立在舊版的Torch和Caffe2框架之上。
  • 基於TensorFlow的深度學習實戰
    毫不誇張得說,TensorFlow的流行讓深度學習門檻變得越來越低,只要你有Python和機器學習基礎,入門和使用神經網絡模型變得非常簡單。TensorFlow簡介如前所述,TensorFlow是一個深度學習庫,使用這一框架,可以用來構建和測試深度神經網絡。深度學習讓我們能夠以極高的準確性構建複雜的應用程式。
  • 最流行的深度學習框架比較 I Tensorflow, PyTorch, Keras 與 FastAI
    在本文中,我不會探討其他深度學習框架。我希望我會收到反饋,Caffe、Theano、MXNET、CNTK、DeepLearning4J、Chainer 或 Oneflow值得討論。值得記住的是,它是最年輕的。TensorFlow和Pythorch都是很好的學習框架。10學習建議如果你想學習TensorFlow,我建議你從Keras開始。我推薦Chollet深入學習Python和danbecker在Keras上的DataCamp課程。
  • 深度學習框架搭建之PyTorch
    深度學習框架搭建之PyTorchPyTorch 簡介PyTorch 是由 Facebook 推出,目前一款發展與流行勢頭非常強勁的深度學習框架。PyTorch 與 NumPy 非常相似,可以說是它的替代者,支持 GPU 加速運算,用來搭建和訓練深度神經網絡。如果學習過 NumPy 以及常見的深度學習概念(如卷積層,循環層等),非常容易上手PyTorch。目前主流的深度學習框架主要有 TensorFlow,PyTorch,mxnet,caffe和Keras 等。
  • 從零開始搭建深度學習伺服器:TensorFlow + PyTorch + Torch
    本教程轉載於深度學習中文社區(studydl.com).在深度學習大行其道的今天,我們不應該停留於觀望的階段,我們應該多多上手進行實踐,下面將為大家介紹一下最簡單也是最基礎的內容,配置一個自己的深度學習伺服器.1.
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    Powerful,是深度學習入門的絕佳技術路線舉個tensorflow1.0的例子(偽代碼)定義Variable、constant、placeholder等。 初始化global_variables_initializersession回話狀態。
  • 可能是史上最全的Tensorflow學習資源匯總
    本篇文章將為大家總結Tensorflow純乾貨學習資源,非常適合新手學習,建議大家收藏。想要學習更多的Tensorflow知識,歡迎點擊上方藍字,關注我們的微信公眾號。 一 、Tensorflow教程資源:1)適合初學者的Tensorflow教程和代碼示例:https://github.com/aymericdamien/TensorFlow-Examples該教程不光提供了一些經典的數據集,更是從實現最簡單的「Hello World」開始,到機器學習的經典算法,再到神經網絡的常用模型
  • TensorFlow、PyTorch、Keras:NLP框架哪家強
    )Keras· 是一個高級API,降低了深度學習框架的複雜程度· 可以在其他深度學習API,如TensorFlow、Theano和CNTK上運行· 本身並不是一個庫競爭性區別本文著重分析比較了這三個框架用於自然語言處理(Natural Language Processing,NLP)時的不同之處。1. 可用的RNN類型當試圖用深度學習方法來解決NLP問題時,循環神經網絡(Recurrent Neural Networks,RNNs)是開發者最常用的專業架構。
  • 從TensorFlow到Theano:橫向對比七大深度學習框架
    最近,來自數據科學公司 Silicon Valley Data Science 的數據工程師 Matt Rubashkin(UC Berkeley 博士)為我們帶來了深度學習 7 種流行框架的深度橫向對比,希望本文能對你帶來幫助。在 SVDS,我們的研發團隊一直在研究不同的深度學習技術;從識別圖像到語音,我們也在各類框架下實現了不少應用。
  • Pytorch還是TensorFlow?頂會帶你覽趨勢
    自 2009 年深度學習再度成為焦點以來,很多機器學習框架成為研究者和業界開發者的新寵。從早期的學術框架 Caffe、Theano 到如今 Pytorch、TensorFlow 這樣越來越大規模的開發框架。發展到 2020 年,我們可以看到國內外越來越多的科技巨頭、創業公司都在研發、使用自家的深度學習框架,如國內的也有百度飛槳、華為 MindSpore、曠視天元。