突發! 人工智慧框架大戰新爆發,PyTorch又勝TensorFlow一局!

CSDN學院發表於2019-05-13

 

 

關於深度學習的框架之爭一直沒有停止過。最近,PyTorch與TensorFlow之爭又爆發,吃瓜群眾歷時1個月的圍觀之後,PyTorch居然又勝一局!

能與TensorFlow抗衡,PyTorch是何方神聖?

Pytorch是Facebook 的 AI 研究團隊釋出了一個 Python 工具包,專門針對 GPU 加速的深度神經網路(DNN)程式設計。作為經典機器學習庫 Torch 的埠,PyTorch 為 Python 語言使用者提供了舒適的寫程式碼選擇

 

好框架應具備的三點,Pytorch有!

對大的計算圖能方便的實現;能自動求變數的導數;能簡單的執行在GPU上;pytorch都做到了,但是現在很多公司用的都是TensorFlow,而pytorch由於比較靈活,在學術科研上用得比較多一點。鄙人認為可能,Google可能下手早一些,而Facebook作後來者,雖然靈活,但是很多公司已經入了TensorFlow的坑了,要全部遷移出來還是很費功夫;而且,TensorFlow在GPU的分散式計算上更為出色,在資料量巨大時效率比pytorch要高一些,我覺得這個也是一個重要的原因吧。

 

推力:史丹佛大學CS博士對比彙總報告再次發酵

準備時間:PyTorch勝

PyTorch實際上是NumPy的替代,它支援GPU,有著更高階的功能,可以用來構建和訓練深度神經網路。

而TensorFlow則可以看成是一種嵌入Python的程式語言。剛使用TensorFlow的人因為這個額外的間接層而苦思冥想。也因為如此,想用TensorFlow還需要學一些額外的概念,比如會話、圖、變數作用域和佔位符等。如要執行基本模型,則還需更多的樣板程式碼。使用TensorFlow的前期準備時間肯定比PyTorch要長。

圖建立和除錯: PyTorch勝

建立和執行計算圖可能是這兩個框架最大的不同。PyTorch中,圖架構是動態的,圖是在執行時建立。而在TensorFlow中,圖架構是靜態的,這意味著先編譯出圖然後再執行。

TensorFlow可以執行dynamic_rnn語句,但是建立自定義的動態計算更加困難。PyTorch中簡單的圖架構容易推導,更容易除錯。

 

資料載入:PyTorch勝

PyTorch中用於資料載入的API設計得很好。介面在資料集、取樣器和資料載入器中有明確規定。資料載入器接收資料集和取樣器,根據取樣器的排程,在資料集上生成迭代器。載入並行資料就像把num_workers語句傳遞到資料載入器一樣簡單。

TensorFlow還沒發現特別有用的載入資料的工具,例如readers, queues, queue runners等,都不夠好。部分原因是因為將想要執行的所有預處理程式碼新增到TensorFlow圖中並不總是直接的,例如計算時頻譜(spectrogram)。

而且,API本身更繁瑣,更難以學習。

 

自定義擴充套件:PyTorch勝

在這兩種框架中都可以用C語言、C++或CUDA構建或繫結自定義擴充套件。但TensorFlow需要更多的樣板程式碼,即使它支援多種型別和裝置。在PyTorch中,只需為每個CPU和GPU版本編寫一個介面和相應的實現。用這兩種框架來編譯擴充套件都很直接,並且不需要下載除了pip安裝包之外的任何標頭檔案或原始碼。

 

覆蓋率:TensorFlow勝

因PyTorch在逐漸發展,兩者之間的差距會縮小甚至到零。然而,目前仍有一些TensorFlow支援但PyTorch不支援的功能,如下所示:

沿著維度翻轉張量 (np.flip, np.flipud, np.fliplr)

檢查張量是空值還是無限值(np.is_nan, np.is_inf)

快速傅立葉變換(np.fft)

此外,TensorFlow的contrib包中有更多比PyTorch更高階的函式和模型。

 

序列化:TensorFlow勝

兩種框架下儲存和載入模型都很簡單。PyTorch有一個特別簡單的API,既可以儲存模型的所有權重,也可以pickle全部類。

TensorFlow的Saver物件也很容易使用,併為檢查點(check-pointing)提供了更多選擇。

在序列化中TensorFlow的主要優點是可以將整個圖儲存為協議緩衝區。這包括引數和運算。此外,該圖可以通過其他支援的語言(C++,Java)載入。這對不支援Python的排程棧來說至關重要。理論上,在改變模型原始碼之後,你想要執行舊模型時它也能有所幫助。

 

部署:TensorFlow勝

對於小規模的伺服器端部署,兩個框架都很容易封裝在諸如Flask web伺服器中。

不過,TensorFlow支援移動和嵌入式部署。可以確定的說,這比包括PyTorch在內的大多數深度學習框架支援功能的都要多。將TensorFlow部署到Android或iOS上確實需要大量的工作,但至少你不必用Java或C++重寫模型的整個推理程式。

 

 

學AI必須得懂Pytorch框架程式設計師不學行嗎?

 

想學習AI,推薦必備入門課:60分鐘帶你掌握PyTorch框架

基於PyTorch的良好效能及大好前景,CSDN學院聯合張校捷老師出品60分鐘帶你掌握PyTorch框架,讓你輕鬆快速入門上手PyTorch。

                                           

掃碼開始學習

深入淺出+預售折扣

https://edu.csdn.net/course/detail/23740?utm_source=blog11

 

為什麼選擇這門課

CSDN學院聯合張校捷老師出品60分鐘帶你掌握PyTorch框架,讓你輕鬆快速入門上手PyTorch。張校捷有著多年行業經驗及嚴謹的技術態度。講解幽默風趣深入淺出,將技術點提煉的簡練精華。最終打造成此課。限時秒殺39元!

相信對於初學者同學,是一個很好的助力,重點明確少走彎路,學習輕鬆,12講內掌握入門技能,拒絕冗雜。

想學習PyTorch,從現在開始起航吧!

點選學習:https://edu.csdn.net/course/detail/23740?utm_source=blog11

 

 

 

相關文章