歡迎光臨
每天分享高質量文章

深度學習戰爭:Facebook 支援的 PyTorch 與 Google 的 TensorFlow | Linux 中國

在這篇文章中,我們將 PyTorch 與 TensorFlow 進行不同方面的比較。
— Savia Lobo


致謝
編譯自 | https://datahub.packtpub.com/deep-learning/dl-wars-pytorch-vs-tensorflow/ 
 作者 | Savia Lobo
 譯者 | Wuod3n ? ? 共計翻譯:2 篇 貢獻時間:6 天

有一個令人震驚的事實,即人工智慧和機器學習的工具和技術在近期迅速興起。深度學習,或者說“註射了激素的機器學習”,資料科學家和機器學習專家在這個領域有數不勝數等可用的庫和框架。很多這樣的框架都是基於 Python 的,因為 Python 是一個更通用,相對簡單的語言。Theano[1]Keras[2]、 TensorFlow[3] 是幾個基於 Python 構建的流行的深度學習庫,目的是使機器學習專家更輕鬆。

Google 的 TensorFlow 是一個被廣泛使用的機器學習和深度學習框架。 TensorFlow 開源於 2015 年,得到了機器學習專家社群的廣泛支援,TensorFlow 已經迅速成長為許多機構根據其機器學習和深度學習等需求而選擇的框架。 另一方面,PyTorch 是由 Facebook 最近開發的用於訓練神經網路的 Python 包,改編自基於 Lua 的深度學習庫 Torch。 PyTorch 是少數可用的深度學習框架之一,它使用基於磁帶的自動梯度系統tape-based autograd system,以快速和靈活的方式構建動態神經網路。

在這篇文章中,我們將 PyTorch 與 TensorFlow 進行不同方面的比較。

讓我們開始吧!

什麼程式語言支援 PyTorch 和 TensorFlow?

雖然主要是用 C++ 和 CUDA 編寫的,但 TensorFlow 包含一個位於核心引擎上的 Python API,使得更便於被Python 支持者Pythonistas使用。 除了 Python,它還包括 C++、Haskell、Java、Go 和 Rust 等其他 API,這意味著開發人員可以用他們的首選語言進行編碼。

雖然 PyTorch 是一個 Python 軟體包,但你也可以提供使用基本的 C/C++ 語言的 API 進行編碼。 如果你習慣使用 Lua 程式語言,你也可以使用 Torch API 在 PyTorch 中編寫神經網路模型。

PyTorch 和 TensorFlow 有多麼易於使用?

如果將 TensorFlow 作為一個獨立的框架使用,它可能會有點複雜,並且會給深度學習模型的訓練帶來一些困難。 為了減少這種複雜性,可以使用位於 TensorFlow 複雜引擎之上的 Keras 封裝,以簡化深度學習模型的開發和訓練。 TensorFlow 也支援 PyTorch 目前沒有的分散式培訓[4]。 由於包含 Python API,TensorFlow 也可以在生產環境中使用,即可用於培訓練和部署企業級深度學習模型。

PyTorch 由於 Torch 的複雜用 Python 重寫。 這使得 PyTorch 對於開發人員更為原生。 它有一個易於使用的框架,提供最大化的靈活和速度。 它還允許在訓練過程中快速更改程式碼而不妨礙其效能。 如果你已經有了一些深度學習的經驗,並且以前使用過 Torch,那麼基於它的速度、效率和易用性,你會更喜歡 PyTorch。 PyTorch 包含定製的 GPU 分配器,這使得深度學習模型具有更高的記憶體效率。 由此,訓練大型深度學習模型變得更容易。 因此,Pytorch 在 Facebook、Twitter、Salesforce 等大型組織廣受歡迎。

用 PyTorch 和 TensorFlow 訓練深度學習模型

PyTorch 和 TensorFlow 都可以用來建立和訓練神經網路模型。

TensorFlow 工作於 SCG(靜態計算圖)上,包括在模型開始執行之前定義靜態圖。 但是,一旦開始執行,在模型內的調整更改的唯一方法是使用 tf.session and tf.placeholder tensors[5]

PyTorch 非常適合訓練 RNN(遞迴神經網路),因為它們在 PyTorch[6] 中比在 TensorFlow 中執行得更快。 它適用於 DCG(動態計算圖),可以隨時在模型中定義和更改。 在 DCG 中,每個模組可以單獨除錯,這使得神經網路的訓練更簡單。

TensorFlow 最近提出了 TensorFlow Fold,這是一個旨在建立 TensorFlow 模型的庫,用於處理結構化資料。 像 PyTorch 一樣,它實現了 DCG,在 CPU 上提供高達 10 倍的計算速度,在 GPU 上提供超過 100 倍的計算速度! 在 Dynamic Batching[7] 的幫助下,你現在可以執行尺寸和結構都不相同的深度學習模型。

GPU 和 CPU 最佳化的比較

TensorFlow 的編譯時間比 PyTorch 短,為構建真實世界的應用程式提供了靈活性。 它可以從 CPU、GPU、TPU、移動裝置到 Raspberry Pi(物聯網裝置)等各種處理器上執行。

另一方面,PyTorch 包括張量tensor計算,可以使用 GPU 將深度神經網路模型加速到 50 倍或更多[8]。 這些張量可以停留在 CPU 或 GPU 上。 CPU 和 GPU 都是獨立的庫, 無論神經網路大小如何,PyTorch 都可以高效地利用。

社群支援

TensorFlow 是當今最流行的深度學習框架之一,由此也給它帶來了龐大的社群支援。 它有很好的檔案和一套詳細的線上教程。 TensorFlow 還包括許多預先訓練過的模型,這些模型託管和提供於 GitHub[9]。 這些模型提供給熱衷於使用 TensorFlow 開發者和研究人員一些現成的材料來節省他們的時間和精力。

另一方面,PyTorch 的社群相對較小,因為它最近才發展起來。 與 TensorFlow 相比,檔案並不是很好,程式碼也不是很容易獲得。 然而,PyTorch 確實允許個人與他人分享他們的預訓練模型。

PyTorch 和 TensorFlow —— 力量懸殊的故事

就目前而言,由於各種原因,TensorFlow 顯然比 PyTorch 更受青睞。

TensorFlow 很大,經驗豐富,最適合實際應用。 是大多數機器學習和深度學習專家明顯的選擇,因為它提供了大量的功能,最重要的是它在市場上的成熟應用。 它具有更好的社群支援以及多語言 API 可用。 它有一個很好的檔案庫,由於從準備到使用的程式碼使之易於生產。 因此,它更適合想要開始深度學習的人,或者希望開發深度學習模型的組織。

雖然 PyTorch 相對較新,社群較小,但它速度快,效率高。 總之,它給你所有的優勢在於 Python 的有用性和易用性。 由於其效率和速度,對於基於研究的小型專案來說,這是一個很好的選擇。 如前所述,Facebook、Twitter 等公司正在使用 PyTorch 來訓練深度學習模型。 但是,使用它尚未成為主流。 PyTorch 的潛力是顯而易見的,但它還沒有準備好去挑戰這個 TensorFlow 野獸。 然而,考慮到它的增長,PyTorch 進一步最佳化並提供更多功能的日子並不遙遠,直到與 TensorFlow可以 比較。

作者: Savia Lobo,非常喜歡資料科學。 喜歡更新世界各地的科技事件。 喜歡歌唱和創作歌曲。 相信才智上的藝術。


via: https://datahub.packtpub.com/deep-learning/dl-wars-pytorch-vs-tensorflow/

作者:Savia Lobo[11] 譯者:Wuod3n 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂