官术网_书友最值得收藏!

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代碼示例

主站蜘蛛池模板: 永德县| 临城县| 辽源市| 河曲县| 泗阳县| 措美县| 马边| 唐山市| 新竹市| 天镇县| 封开县| 阳春市| 烟台市| 大丰市| 乌鲁木齐县| 沁水县| 城固县| 天镇县| 鹤庆县| 特克斯县| 浦县| 巴东县| 永平县| 奎屯市| 旺苍县| 阿图什市| 郯城县| 沅陵县| 乌恰县| 辉南县| 海兴县| 蚌埠市| 广丰县| 台北县| 婺源县| 龙山县| 华亭县| 商水县| 永仁县| 米脂县| 六安市|