- Python 深度學習
- 呂云翔 劉卓然 關捷雄等編著
- 881字
- 2021-04-14 11:54:17
2.3 PyTorch
2.3.1 PyTorch簡介
2017年1月,Facebook人工智能研究院(FAIR)團隊在GitHub上開源了PyTorch,并迅速占領了GitHub熱度榜榜首。
作為一個2017年發布,具有先進設計理念的框架,PyTorch的歷史可追溯到2002年誕生于紐約大學的Torch。Torch使用Lua語言作為接口。Lua語言簡潔高效,但由于其過于小眾,以至于很多人聽說要掌握Torch必須新學一門語言就望而卻步(其實Lua是一門比Python還簡單的語言)。
考慮到Python在計算科學領域的領先地位,以及其生態完整性和接口易用性,幾乎任何框架都不可避免地要提供Python接口。終于,在2017年,Torch幕后團隊推出了PyTorch。PyTorch不是簡單地封裝Lua Torch提供Python接口,而是對Tensor之上的所有模塊進行了重構,并新增了最先進的自動求導系統,成為當下最流行的動態圖框架之一。
2.3.2 PyTorch的特點
TensorFlow與Caffe都是命令式的編程語言,并且是靜態的,即首先必須構建一個神經網絡,然后重復使用同樣的結構;如果想要改變網絡的結構,就必須從頭開始。但是PyTorch通過一種反向自動求導技術,可以讓用戶零延遲地任意改變神經網絡的行為,盡管這項技術不是PyTorch獨有,但目前為止它實現是最快的,這也是PyTorch對比TensorFlow最大的優勢。
PyTorch的設計思路是線性、直觀且易于使用的,當用戶執行一行代碼時,它會忠實地執行,所以當用戶的代碼出現Bug時,可以通過這些信息輕松快捷地找到出錯的代碼,不會讓用戶在Debug時因為錯誤的指向或者異步及不透明的引擎浪費太多時間。
PyTorch的代碼相對于TensorFlow而言,更加簡潔直觀,同時相對于TensorFlow高度工業化且很難看懂的底層代碼,PyTorch的源代碼要友好很多且更易看懂。深入API理解PyTorch底層肯定是一件令人高興的事。
2.3.3 PyTorch的最大優勢
PyTorch最大優勢是建立了動態的神經網絡,可以非常容易地輸出每一步的調試結果,相對于其他框架,調試十分方便。
如圖2.10和圖2.11所示,PyTorch是隨著代碼的運行逐步建立起來的,也就是說使用者并不需要在一開始就定義好全部的網絡結構,而是可以隨著編碼的進行一點一點調試,相比于TensorFlow和Caffe的靜態圖而言,這種設計顯得更加貼近一般人的編碼習慣。

圖2.10 動態圖1

圖2.11 動態圖2
PyTorch的代碼示例如圖2.12所示,相比于TensorFlow、Caffe,其可讀性更高,網絡各層的定義與傳播方法一目了然,甚至不需要過多的文檔與注釋,單憑代碼就可以很容易理解其功能,因此成為許多初學者的首選。

圖2.12 PyTorch代碼示例
- Flask Web全棧開發實戰
- GraphQL學習指南
- Learning PostgreSQL
- Microsoft Application Virtualization Cookbook
- Vue.js 2 and Bootstrap 4 Web Development
- Java高手真經(高級編程卷):Java Web高級開發技術
- Learn React with TypeScript 3
- Learning Unreal Engine Android Game Development
- Illustrator CC平面設計實戰從入門到精通(視頻自學全彩版)
- R Data Science Essentials
- 深度探索Go語言:對象模型與runtime的原理特性及應用
- Web Developer's Reference Guide
- Learning Unreal Engine Game Development
- Python第三方庫開發應用實戰
- R語言數據分析從入門到實戰