2019年十大最佳深度學習框架

dicksonjyl560101發表於2019-06-21



2019年十大最佳深度學習框架

雖然我們大多數人都驚歎為什麼DL這麼好? 在使用大量資料進行訓練時,它在準確性方面非常出色。近幾年隨著深度學習演算法的發展,出現了很多深度學習的框架,這些框架各有所長,各具特色。下面將為大家介紹2019年最受歡迎的十大深度學習框架。

TensorFlow

2019年十大最佳深度學習框架

谷歌的Tensorflow可以說是當今最受歡迎的深度學習框架。 Gmail,Uber,Airbnb,Nvidia以及其他許多知名品牌都在使用。TF是目前深度學習的主流框架, Tensorflow主要特性:

  • TensorFlow支援python、JavaScript、C ++、Java和Go,C#和Julia等多種程式語言。
  • TF不僅擁有強大的計算叢集,還可以在iOS和Android等移動平臺上執行模型。
  • TF程式設計入門難度較大。初學者需要仔細考慮神經網路的架構,正確評估輸入和輸出資料的維度和數量。
  • TF使用靜態計算圖進行操作 。 也就是說我們需要先定義圖形,然後執行計算,如果我們需要對架構進行更改,我們會重新訓練模型。 選擇這樣的方法是為了提高效率,但是許多現代神經網路工具能夠在學習過程中考慮改進而不會顯著降低學習速度。 在這方面,TensorFlow的主要競爭對手是PyTorch 。

TensorFlow優點:

  • 它非常適合建立和試驗深度學習架構,便於資料整合,如輸入圖形,SQL表和影像。
  • 它得到谷歌的支援,這就說明該模型短期內不會被拋棄,因此值得投入時間來學習它。

PyTorch

2019年十大最佳深度學習框架

Tensorflow之後用於深度學習的主要框架是PyTorch。 PyTorch框架是Facebook開發的,已被Twitter和Salesforce等公司使用。 PyTorch基本特性:

  • 與TensorFlow不同,PyTorch庫使用動態更新的圖形進行操作 。 這意味著它可以在流程中更改體系結構。
  • 在PyTorch中,您可以使用標準偵錯程式 ,例如pdb或PyCharm。

PyTorch優點:

  • 訓練神經網路的過程簡單明瞭。 同時,PyTorch支援資料並行和分散式學習模型,並且還包含許多預先訓練的模型。
  • PyTorch更適合小型專案和原型設計。

Sonnet

2019年十大最佳深度學習框架

Sonnet深度學習框架是建立在TensorFlow的基礎之上。 它是DeepMind用於建立具有複雜架構的神經網路。 Sonnet基本特性:

  • 物件導向的庫,在開發神經網路(NN)或其他機器學習(ML)演算法時更加抽象。
  • Sonnet的想法是構造對應於神經網路的特定部分的主要Python物件。 此外,這些物件獨立地連線到計算TensorFlow圖。 分離建立物件並將其與圖形相關聯的過程簡化了高階體系結構的設計。

Sonnet優點:

  • Sonnet的主要優點是可以使用它來重現DeepMind論文中展示的研究,比Keras更容易,因為DeepMind論文模型就是使用Sonnet搭建的。

Keras

2019年十大最佳深度學習框架

Keras是一個機器學習框架,如果您擁有大量資料和/或你想快速入門深度學習,那麼Keras將非常適合學習。 Keras是TensorFlow高階整合APi,可以非常方便的和TensorFlow進行融合。 這是我強烈推薦學習的一個庫。Keras基本特性:

  • 除了Tensorflow之外,Keras還是其他流行的庫(如Theano和CNTK)的高階API。
  • 在Keras中更容易建立大規模的深度學習模型,但Keras框架環境配置比其他底層框架要複雜一些。

Keras優點:

  • 對於剛剛入門的人來說,Keras是最好的深度學習框架。 它是學習和原型化簡單概念的理想選擇,可以理解各種模型和學習過程的本質。
  • Keras是一個簡潔的API。 可以快速幫助您建立應用程式。
  • Keras中程式碼更加可讀和簡潔。
  • Keras模型序列化/反序列化API,回撥和使用Python生成器的資料流非常成熟。

順便說一下TensorFlow和Keras的對比:

PS:Tensorflow處於底層框架:這和MXNet,Theano和PyTorch等框架一樣。 包括實現諸如廣義矩陣 - 矩陣乘法和諸如卷積運算的神經網路原語之類的數學運算。

Keras處於高度整合框架。 雖然更容易建立模型,但是面對複雜的網路結構時可能不如TensorFlow。

MXNet

2019年十大最佳深度學習框架

MXNet是一種高度可擴充套件的深度學習工具,可用於各種裝置。 雖然與TensorFlow相比,它似乎沒有被廣泛使用,但MXNet的增長可能會因為成為一個Apache專案而得到提升。 MXNet基本特性:

  • 該框架支援多種語言,如C ++,Python,R,Julia,JavaScript,Scala,Go,甚至Perl。
  • 可以在多個GPU和許多機器上非常有效地平行計算。

MXNet優點:

  • 支援多個GPU(具有最佳化的計算和快速上下文切換)
  • 清晰且易於維護的程式碼(Python,R,Scala和其他API)
  • 快速解決問題的能力(對於像我這樣的深度學習新手至關重要)

雖然它不像TF那麼受歡迎,但MXNet具有詳細的文件並且易於使用,能夠在命令式和符號式程式設計風格之間進行選擇,使其成為初學者和經驗豐富的工程師的理想選擇。

GLUON

2019年十大最佳深度學習框架

Gluon是一個更好的深度學習框架,可以用來建立複雜的模型。 GLUON基本特性:

  • Gluon的特殊性是具有一個靈活的介面,簡化了原型設計,構建和培訓深度學習模型,而不會犧牲學習速度。
  • Gluon基於MXNet,提供簡單的API,簡化深度學習模型的建立。
  • 與PyTorch類似,Gluon框架支援使用動態圖表 ,將其與高效能MXNet相結合。 從這個角度來看,Gluon看起來像是分散式計算的Keras非常有趣的替代品。

GLUON優點:

  • 在Gluon中,您可以使用簡單,清晰和簡潔的程式碼定義神經網路。
  • 它將訓練演算法和神經網路模型結合在一起,從而在不犧牲效能的情況下提供開發過程的靈活性。
  • Gluon可以定義動態的神經網路模型,這意味著它們可以動態構建,使用任何結構,並使用Python的任何本機控制流。

SWIFT

2019年十大最佳深度學習框架

當你聽到Swift時,您可能會考慮iOS或MacOS的應用程式開發。但是如果你正在學習深度學習,那麼你一定聽說過Swens for Tensorflow。透過直接與通用程式語言整合,Swift for TensorFlow可以以前所未有的方式表達更強大的演算法。 SWIFT基本特性:

  • 可以輕鬆獲得可微分的自定義資料結構。
  • 下一代API 。 透過實踐和研究獲得的新API更易於使用且更強大。
  • 在TensorFlow的基礎上 ,Swift API為您提供對所有底層TensorFlow運算子的直接呼叫。
  • 基於Jupyter、LLDB或者Swift in Colab的程式設計工具提高了您的工作效率。

SWIFT優點:

  • 如果動態語言不適合您的任務,那麼這將是一個很好的選擇。 當你訓練執行了幾個小時,然後你的程式遇到型別錯誤,那麼使用Swift,一種靜態型別語言。您將看到程式碼錯誤的地方。

Chainer

2019年十大最佳深度學習框架

直到CMU的DyNet和Facebook的PyTorch出現之前,Chainer是動態計算圖或網路的領先神經網路框架,它允許輸入資料長度不一致。 chainer基本特性:

  • Chainer程式碼是在Numpy和CuPy庫的基礎之上用純 Python 編寫的, Chainer是第一個使用動態架構模型的框架。

Chainer優點:

  • 透過自己的基準測試,Chainer明顯比其他面向Python的框架更快,TensorFlow是包含MxNet和CNTK的測試組中最慢的。
  • 比TensorFlow更好的GPU和GPU資料中心效能。最近Chainer成為GPU資料中心效能的全球冠軍。

DL4J

2019年十大最佳深度學習框架

那些使用Java或Scala的人應該注意DL4J(Deep Learning for Java的簡稱)。 DL4J的基本特性:

  • DL4J中的神經網路訓練透過簇的迭代平行計算。
  • 該過程由 Hadoop和Spark 架構支援。
  • 使用 Java 允許您在Android裝置的程式開發週期中使用。

DL4J優點:

  • 如果您正在尋找一個良好的Java深度學習框架,這會是一個非常好的平臺。

ONNX

2019年十大最佳深度學習框架

ONNX專案誕生於微軟和Facebook,旨在尋找深度學習模型呈現的開放格式。 ONNX簡化了在人工智慧的不同工作方式之間傳遞模型的過程。 因此ONNX具有各種深度學習框架的優點。 ONNX基本特性:

  • ONNX使模型能夠在一個框架中進行訓練並轉移到另一個框架中進行推理。 ONNX模型目前在Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch中得到支援,並且還有許多其他常見框架和庫的聯結器。

ONNX優點:

  • 對於PyTorch開發人員來說,ONNX是一個好的選擇。 但是對於那些喜歡TensorFlow的人來說,Keras等可能好一點。

總結

那麼您應該使用哪種深度學習框架?下面是幾點建議:

  • 如果你剛剛開始學習,那麼最好的選擇是Keras 。
  • 出於研究目的,請選擇PyTorch 。
  • 對於生產,您需要關注環境。 因此對於Google Cloud,最好的選擇是TensorFlow ,適用於AWS - MXNet和Gluon 。
  • Android開發人員應該關注D4LJ ,對於iOS來說, Core ML會破壞類似的任務範圍。
  • 最後, ONNX將幫助解決不同框架之間的互動問題。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2648297/,如需轉載,請註明出處,否則將追究法律責任。

相關文章