當前位置:
首頁 > 最新 > 深度學習戰爭:Facebook 支持的 PyTorch與Google的TensorFlow

深度學習戰爭:Facebook 支持的 PyTorch與Google的TensorFlow

在這篇文章中,我們將 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中國榮譽推出


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux中國 的精彩文章:

Linux 中的「大內存頁」是個什麼?
cTop:用於容器監控的命令行工具

TAG:Linux中國 |