自深度學(xué)習(xí)重新獲得公認(rèn)以來,許多機器學(xué)習(xí)框架層出不窮,爭相成為研究人員以及行業(yè)從業(yè)人員的新寵。從早期的學(xué)術(shù)成果 Caffe、Theano,到獲得龐大工業(yè)支持的 PyTorch、TensorFlow,許多研究者面對大量的學(xué)習(xí)框架不知該如何選擇?
Tensorflow / Keras 和 PyTorch 是迄今為止最受歡迎的兩個主要機器學(xué)習(xí)庫。TensorFlow 由谷歌團隊開發(fā),于 2015 年發(fā)布。而 PyTorch 則由 Facebook 的團隊開發(fā),并于 2017 年在 GitHub 上開源。
為了充分發(fā)揮不同機器學(xué)習(xí)框架的優(yōu)勢,許多機器學(xué)習(xí)從業(yè)者對不同框架進行了比較,通過對比優(yōu)缺點,以選擇最適合自己的框架。
在本文中,我們將從以下兩個方面對機器學(xué)習(xí)庫(PyTorch 1.8 和 Tensorflow 2.5)進行比較:
最新發(fā)行版本中的新增功能;
使用哪個以及為什么。
Tensorflow 2.x VS Pytorch 1.8
Tensorflow 2.x
TensorFlow 1 和 TensorFlow 2.x 之間有很多變化。第一個是 Tensorflow.js. 的發(fā)布。隨著 Web 應(yīng)用程序越來越占主導(dǎo)地位,在瀏覽器上部署模型的需求大大增加。借助 Tensorflow.js,你可以使用 Node 在瀏覽器中運行現(xiàn)有的 python 模型、重新訓(xùn)練現(xiàn)有的模型,并使用 Javascript 完全構(gòu)建和訓(xùn)練模型(不需要 python)。
Tensorflow 2.x 中的另一個版本是 Tensorflow Lite,一個輕量級庫,用于在移動和嵌入式設(shè)備上部署模型。這是因為移動和 Web 應(yīng)用程序是兩種最主要的應(yīng)用程序類型。
使用 Tensorflow Lite,你可以簡單地將現(xiàn)有模型轉(zhuǎn)換為「compressed flat buffer」,然后將 buffer 加載到移動設(shè)備或任何其他嵌入式設(shè)備中。這期間發(fā)生的主要優(yōu)化過程是將 32 位浮點值轉(zhuǎn)換成 8 位,這更適合于嵌入式設(shè)備(更少的內(nèi)存使用)。
此外還包括 Tensorflow Extended(TFX)的發(fā)布,它是用于部署生產(chǎn) ML pipeline 的端到端平臺。其在機器學(xué)習(xí)的 3 個最重要領(lǐng)域(web 應(yīng)用程序、移動應(yīng)用程序和生產(chǎn)管理)方面做得很好。
機器學(xué)習(xí)生產(chǎn) pipeline 仍需要大量研究和開發(fā)。TFX 可以應(yīng)對經(jīng)典的軟件生產(chǎn)挑戰(zhàn),例如可擴展性、可維護性和模塊化。此外,它還可以幫助解決機器學(xué)習(xí)的特定挑戰(zhàn),例如持續(xù)在線學(xué)習(xí)、數(shù)據(jù)驗證,數(shù)據(jù)管理等。
PyTorch 1.8
與 Tensorflow Lite 相似,PyTorch 改進了其現(xiàn)有的 Pytorch Mobile。該框架可以量化、跟蹤、優(yōu)化和保存適用于 Android 和 iOS 的模型。此外還發(fā)布了 Pytorch Lite Interpreter 的原型,該原型可減小移動設(shè)備上二進制運行時的大小。
此外,還通過更具體的錯誤處理和 pipeline 并行為分布式訓(xùn)練提供了更多支持。Pytorch Profiler 用于分析 APP、模型的執(zhí)行時間、執(zhí)行流程、內(nèi)存消耗等。
盡管 Pytorch lightning 不是 PyTorch 1.8 的一部分,但還是值得一提。Pytorch lightning 已發(fā)布,可以使編碼神經(jīng)網(wǎng)絡(luò)更加簡單。可以將其視為 Pytorch 的 Keras,使用廣泛,其中的原因可歸結(jié)為 Keras 顯著的改進了 Tensorflow,因為它使實現(xiàn)模型變得更加容易和快捷。在 Pytorch 中,Pytorch lightning 起到了相同的作用。
該如何選擇?
從本質(zhì)上講,這兩個庫都是相當(dāng)不錯的,它們在性能和功能上非常接近??偟膩碚f,兩個庫之間的編碼風(fēng)格有所不同。
PyTorch 以其 OOP(面向?qū)ο?a target="_blank">編程)風(fēng)格而聞名。例如,當(dāng)創(chuàng)建自定義模型或自定義數(shù)據(jù)集時,你很可能會創(chuàng)建一個新類,該類繼承默認(rèn)的 PyTorch 庫,然后在進行代碼調(diào)整。盡管 OOP 以某種方式為代碼提供了一種結(jié)構(gòu),但就代碼行數(shù)而言,會使代碼變得很長。
另一方面,當(dāng)使用 Tensorflow 時,你很可能會使用 Keras。例如在進行 Kaggle 比賽時(監(jiān)督學(xué)習(xí)圖像分類、目標(biāo)檢測、圖像分割、NLP 等任務(wù)),可以發(fā)現(xiàn) Keras 的代碼實現(xiàn)比 PyTorch 短。作為初學(xué)者 / 中級人員,這是非常不錯的選擇,因為你不必花費大量時間閱讀和分解代碼行。
在某些情況下,需要在特定的機器學(xué)習(xí)領(lǐng)域中尋找特定的模型。例如,當(dāng)進行目標(biāo)檢測比賽時,想要實現(xiàn) DETR(Facebook 的 Data-Efficient transformer),結(jié)果發(fā)現(xiàn)大部分資源都是用 PyTorch 編寫的,因此在這種情況下,使用 PyTorch 更加容易。
另外,PyTorch 的代碼實現(xiàn)更長,因為它們涵蓋了許多底層細節(jié)。這既是優(yōu)點也是缺點。當(dāng)你是初學(xué)者時先學(xué)習(xí)低層級的細節(jié),然后再使用更高層級的 API(例如 Keras)非常有幫助。但是,這同時也是一個缺點,因為你會發(fā)現(xiàn)自己迷失于許多細節(jié)和相當(dāng)長的代碼段中。因此,從本質(zhì)上講,如果你的工作期限很緊,最好選擇 Keras 而不是 PyTorch。
原文鏈接:https://towardsdatascience.com/pytorch-vs-tensorflow-2021-d403504d7bc3
文章轉(zhuǎn)自機器之心
(版權(quán)歸原作者所有,侵刪)
編輯:jq
-
pytorch
+關(guān)注
關(guān)注
2文章
809瀏覽量
13710
原文標(biāo)題:PyTorch 1.8 和 Tensorflow 2.5,我該用哪個?
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論