天天看點

PyTorch vs. TensorFlow月度使用體驗總結

日前,英偉達深度學習項目實習生Dominic Monn在medium上發文總結了他使用PyTorch和TensorFlow的一些體會,在文章中,他從安裝、使用、檔案、社群等方面簡單對比了這兩種架構。

他曾是TensorFlow使用者,加入英偉達後開始使用PyTorch,下面是的他的一些使用體驗:

安裝

PyTorch安裝起來很容易,也很直接,大家可以通過PIP來安裝,也可以直接選擇源碼安裝。PyTorch也提供Docker圖,大家可以在項目中把Docker圖用作base image。

PyTorch并不像TensorFlow一樣已經指定好CPU和GPU,雖然它的這一特征可以讓安裝更加簡單,但如果在項目中想要同時支援GPU和CPU,将會産生更多代碼。

使用

PyTorch提供非常Python化的API接口,這與TensorFlow有很大差别,TensorFlow需要先定義所有的張量和圖,然後再執行相應的會話操作。雖然PyTorch的這一特性使得代碼變多了,但會更加清晰。

PyTorch圖必須定義在從PyTorch nn.Module類繼承過來的類中,運作圖的時候會調用forward()函數,通過這種“約定優于配置”(convention over configuration)的方式,圖的位置一直處于可知狀态,也不會在餘下的代碼中定義變量。

你可能會需要一段時間來适應PyTorch中的這種“新”方法,不過如果你以前在深度學習的研究之外用過Python,這種方法對你來說會很直覺。

也有一些人這樣評價——與TensorFlow相比,PyTorch在許多模型上都有更加優秀的表現。

檔案

PyTorch的大部分文檔都是完整的,我每次都能成功找到函數或子產品的定義。TensorFlow所有的函數都在一個頁面,而PyTorch不同于TensorFlow,每個子產品隻用一個頁面。如果你要用Google找一個函數,這會有點困難。

社群

很明顯,PyTorch社群不像TensorFlow那麼龐大,但很多人都喜歡在業餘時間用PyTorch,即使他們工作時使用的是TensorFlow。我認為,一旦PyTorch釋出正式版,PyTorch社群會變得更大。在目前,仍然很難找到非常精通PyTorch的人。

不過它的社群也足夠大了,如果在官方論壇上提出問題,通常很快就能得到解答。許多優秀神經網絡模型也有PyTorch的操作樣例了。

工具和輔助功能

雖然PyTorch能提供相當多的工具,但仍然缺少一些非常有用的部分。例如它沒有類似于TensorBoard這種非常有用的工具,這會導緻很難進行可視化。

此外它也缺失一些常用的輔助功能,比起TensorFlow來說需要我們自己寫更多的代碼。

總結

PyTorch是TensorFlow之外一個非常好的選擇,雖然 PyTorch仍在測試階段,我希望在可用性、檔案和性能方面它能有更多的改變和進步。PyTorch非常Python化,用起來很容易。它的社群活躍,檔案齊全,據稱它比TensorFlow更快。然而,它的社群比起TensorFlow來說,仍然隻是九牛一毛,并且缺失了諸如 TensorBoard等一些非常有用的工具。

雷鋒網 AI科技評論注,除了Dominic Monn近日對這兩種架構的對比, 斯坦福大學計算機科學博士生Awni Hannun也曾發文撰寫了這兩個架構之間的主要差異,詳情可以參見用PyTorch還是TensorFlow?斯坦福大學CS博士生帶來全面解答。

本文作者:Non