终极之战!TensorFlow与PyTorch谁最适合深度学习
選自builtin
本文經(jīng)機器之心授權(quán)轉(zhuǎn)載,禁止二次轉(zhuǎn)載
(微信公眾號:almosthuman2014)
參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區(qū)歡迎的兩種深度學(xué)習(xí)框架。那么究竟哪種框架最適宜自己手邊的深度學(xué)習(xí)項目呢?本文作者從這兩種框架各自的功能效果、優(yōu)缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那么你可能已經(jīng)開始了自己的深度學(xué)習(xí)之旅。如果你對這一領(lǐng)域還不是很熟悉,那么簡單來說,深度學(xué)習(xí)使用了「人工神經(jīng)網(wǎng)絡(luò)」,這是一種類似大腦的特殊架構(gòu),這個領(lǐng)域的發(fā)展目標(biāo)是開發(fā)出能解決真實世界問題的類人計算機。為了幫助開發(fā)這些架構(gòu),谷歌、Facebook 和 Uber 等科技巨頭已經(jīng)為 Python 深度學(xué)習(xí)環(huán)境發(fā)布了多款框架,這讓人們可以更輕松地學(xué)習(xí)、構(gòu)建和訓(xùn)練不同類型的神經(jīng)網(wǎng)絡(luò)。本文將詳細介紹和比較兩種流行的框架:TensorFlow 與 PyTorch。目錄谷歌的 TensorFlow
Facebook 的 PyTorch
我們可以用 TensorFlow 和 PyTorch 構(gòu)建什么?
PyTorch 和 TensorFlow 對比
PyTorch 和 TensorFlow 的優(yōu)點和缺點
PyTorch 和 TensorFlow 安裝、版本、更新
TensorFlow 還是 PyTorch?我的建議
機制:動態(tài)圖定義與靜態(tài)圖定義TensorFlow 框架由兩個核心構(gòu)建模塊組成:
一個用于定義計算圖以及在各種不同硬件上執(zhí)行這些圖的運行時間的軟件庫。
一個具有許多優(yōu)點的計算圖(后面很快就會介紹這些優(yōu)點)。
下圖是 TensorFlow 中運行代碼之前以靜態(tài)方式生成計算圖的方式。計算圖的核心優(yōu)勢是能實現(xiàn)并行化或依賴驅(qū)動式調(diào)度(dependency driving scheduling),這能讓訓(xùn)練速度更快,更有效率。
類似于 TensorFlow,PyTorch 也有兩個核心模塊:
計算圖的按需和動態(tài)構(gòu)建
Autograd:執(zhí)行動態(tài)圖的自動微分
根據(jù)你所用的框架,在軟件領(lǐng)域有很大的不同。TensorFlow 提供了使用 TensorFlow Fold 庫實現(xiàn)動態(tài)圖的方式,而 PyTorch 的動態(tài)圖是內(nèi)置的。分布式訓(xùn)練PyTorch 和 TensorFlow 的一個主要差異特點是數(shù)據(jù)并行化。PyTorch 優(yōu)化性能的方式是利用 Python 對異步執(zhí)行的本地支持。而用 TensorFlow 時,你必須手動編寫代碼,并微調(diào)要在特定設(shè)備上運行的每個操作,以實現(xiàn)分布式訓(xùn)練。但是,你可以將 PyTorch 中的所有功能都復(fù)現(xiàn)到 TensorFlow 中,但這需要做很多工作。下面的代碼片段展示了用 PyTorch 為模型實現(xiàn)分布式訓(xùn)練的簡單示例:
可視化在訓(xùn)練過程的可視化方面,TensorFlow 更有優(yōu)勢。可視化能幫助開發(fā)者跟蹤訓(xùn)練過程以及實現(xiàn)更方便的調(diào)試。TensorFlow 的可視化庫名為 TensorBoard。PyTorch 開發(fā)者則使用 Visdom,但是 Visdom 提供的功能很簡單且有限,所以 TensorBoard 在訓(xùn)練過程可視化方面更好。TensorBoard 的特性:
跟蹤和可視化損失和準(zhǔn)確度等指標(biāo)
可視化計算圖(操作和層)
查看權(quán)重、偏差或其它張量隨時間變化的直方圖
展示圖像、文本和音頻數(shù)據(jù)
分析 TensorFlow 程序
處理回調(diào)
繪制圖表和細節(jié)
管理環(huán)境
近期 Keras 被合并到了 TensorFlow 庫中,這是一個使用 TensorFlow 作為后端的神經(jīng)網(wǎng)絡(luò)框架。從那時起,在 TensorFlow 中聲明層的句法就與 Keras 的句法類似了。首先,我們聲明變量并將其分配給我們將要聲明的架構(gòu)類型,這里的例子是一個 Sequential() 架構(gòu)。接下來,我們使用 model.add() 方法以序列方式直接添加層。層的類型可以從 tf.layers 導(dǎo)入,如下代碼片段所示:
TensorFlow 和?PyTorch?的優(yōu)缺點
TensorFlow和PyTorch各有其優(yōu)缺點。
TensorFlow 的優(yōu)點:
簡單的內(nèi)置高級 API
使用 TensorBoard 可視化訓(xùn)練
通過 TensorFlow serving 容易實現(xiàn)生產(chǎn)部署
很容易的移動平臺支持
開源
良好的文檔和社區(qū)支持
靜態(tài)圖
調(diào)試方法
難以快速修改
類 Python 的代碼
動態(tài)圖
輕松快速的編輯
良好的文檔和社區(qū)支持
開源
很多項目都使用 PyTorch
可視化需要第三方
生產(chǎn)部署需要 API 服務(wù)器
pip3?install?torch?torchvision
Windows
pip3?install?https://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl pip3?install?https://download.pytorch.org/whl/cu90/torchvision-0.3.0-cp36-cp36m-win_amd64.whl
TensorFlow 安裝macOS、Linux 和 Windows
#?Current?stable?release?for?CPU-only pip?install?tensorflow #?Install?TensorFlow?2.0?Beta pip?install?tensorflow==2.0.0-beta1要檢查安裝是否成功,可使用命令提示符或終端按以下步驟操作。TensorFlow 還是 PyTorch?我的建議TensorFlow 是一種非常強大和成熟的深度學(xué)習(xí)庫,具有很強的可視化功能和多個用于高級模型開發(fā)的選項。它有面向生產(chǎn)部署的選項,并且支持移動平臺。另一方面,PyTorch 框架還很年輕,擁有更強的社區(qū)動員,而且它對 Python 友好。我的建議是如果你想更快速地開發(fā)和構(gòu)建 AI 相關(guān)產(chǎn)品,TensorFlow 是很好的選擇。建議研究型開發(fā)者使用 PyTorch,因為它支持快速和動態(tài)的訓(xùn)練。
原文鏈接:https://builtin.com/data-science/pytorch-vs-tensorflow
推薦閱讀:(點擊下方標(biāo)題即可跳轉(zhuǎn))騷操作 !用 Python 偷偷抓取女朋友的行蹤
我在 GitHub 上看到了一個喪心病狂的開源項目!
騷操作 !用 Python 自動下載抖音美麗小姐姐
??長按 2 秒關(guān)注「 小詹學(xué)Python 」
總結(jié)
以上是生活随笔為你收集整理的终极之战!TensorFlow与PyTorch谁最适合深度学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.2 亿人都在刷抖音,而优秀的人在看
- 下一篇: 一张表看尽CV和NLP的经典+前沿论文,