回覆列表
  • 1 # 機器之心Pro

    本文作者之前是 TensorFlow 的使用者,最近開始使用 PyTorch。經過一個月的使用之後,他將自己的體驗寫了出來。文章從安裝、使用、文件、社群、工具五個方面對 PyTorch 和 TensorFlow 進行了對比。

    我以前是 TensorFlow 的使用者,但是加入英偉達之後,我們決定轉向 PyTorch(出於測試的目的)。以下是我的一些體驗。

    安裝

    PyTorch 的安裝輕鬆直接,可以透過 PIP 或資料來源安裝。PyTorch 還提供 Docker 映象,可用作專案的基影象。

    PyTorch 沒有專門的 CPU 版本和 GPU 版本,這一點與 TensorFlow 不同。但是這使得安裝更加便捷,因為同時支援 CPU 和 GPU 的使用,它可以生成更豐富的程式碼。

    需要注意,PyTorch 暫時無法提供官方的 Windows 分發。現在有非官方的 Windows 埠,但是並未得到 PyTorch 的支援。

    使用

    PyTorch 提供 Python 式的 API。這與 TensorFlow 不同,在 TensorFlow 中你需要先定義所有張量和圖,再在會話中使用。

    我認為,這將使程式碼變得更長,但是更簡潔易懂。PyTorch 圖必須在從 PyTorch nn.Module 類中繼承的類中進行定義。圖執行時會呼叫一個 forward() 函式。用這種「約定優於配置」方法,圖的位置通常是已知的,且變數不用在後面的程式碼中進行定義。

    這種「新」方法需要一些時間來適應,但是我認為,如果你在深度學習之外的領域中使用過 Python,那麼你會發現這種方法非常直觀。

    根據一些評價,PyTorch 還在大量模型中展示了優於 TensorFlow 的效能。

    文件

    文件在大多數情況下是完整的。我查詢函式或模組的定義時,從未失敗過。TensorFlow 文件中所有的函式都在同一頁,PyTorch 不同,它每個模組使用一頁。如果你習慣了用 TensorFlow 查詢函式的話,這可能有點難。

    社群

    很明顯,PyTorch 社群沒有 TensorFlow 社群大。但是,很多人喜歡在閒暇時間使用 PyTorch,即使在工作時間仍使用 TensorFlow。我認為如果 PyTorch 脫離 Beta,這種情況可能會有所改變。

    當前,精通 PyTorch 的人仍然很少。

    這個社群足夠大,官方論壇的問題會得到快速回答,這樣大量很棒的神經網路的示例實現就會被翻譯成 PyTorch。

    工具和助手

    即使 PyTorch 提供大量的工具,但還缺少一些非常有用的工具。其中之一就是 TensorFlow 的 TensorBoard。這使得視覺化稍微有點困難。

    PyTorch 還缺少很多常用助手,比起 TensorFlow,這要求 PyTorch 使用者更多依靠自己寫程式碼。

    結論

    PyTorch 是 TensorFlow 的重要替代方案。由於 PyTorch 還在 Beta 中,所以我期待 PyTorch 的易用性、文件和效能都能夠有更多改變和改進。

    PyTorch 是很 Python 式的,用起來很舒適。它的社群和文件都很優秀,據說它還比 TensorFlow 稍快一點。

    但是,PyTorch 社群與 TensorFlow 社群相比較小,且缺少很多有用的工具,如 TensorBoard。

  • 2 # 測試開發員

    簡單點說的話pytorch比tensorflow容易上手,且由於基於python所以安裝部署都更快捷。但是由於pytorch是個年輕的專案,所以相比tensorflow存在社群資源不夠豐富,使用過程中還可能會踩一些坑和開發人員還沒有修復的bug等。

    總之,如果你的專案已經在使用tensorflow,不建議往pytorch轉,而如果是選型階段,可以優先考慮pytorch,因為長遠來看pytorch的潛力似乎更大些。

  • 3 # 你看我獨角獸嗎

    由於人工智慧正在幾乎所有自動化領域得到實施。 深度學習是用於開發和最大化類人計算機效率的最棘手的架構之一。 為了幫助產品開發人員,Google,Facebook和其他大型科技公司已經發布了各種Python環境框架,可以學習,構建和培訓多樣化的神經網路。

    谷歌的TensorFlow是深度學習的開源框架,多年來受到歡迎。 使用新框架,PyTorch因其易於編寫的程式碼而受到初學者的關注。 PyTorch是基於Python,C ++和CUDA後端開發的,可用於Linux,macOS和Windows。

    這兩個廣泛使用的框架之間存在一些差異,可能是因為它們實現程式碼,視覺化技術以及靜態和動態程式設計的方式。

    我們來看看差異:

    計算圖

    初始化時,在PyTorch上分配和構建圖形遵循動態計算圖形方法。熟悉Python中的數學庫的使用者會發現它很容易,因為人們不必為了構建圖形而頭腦發熱。您可以按照自己的方式直接編寫輸入和輸出功能,而無需擔心尺寸張量。透過CUDA支援,這使生活變得更加容易。

    在TensorFlow中,人們必須努力構建張量(圖形)的維度以及為變數分配佔位符。完成此操作後,必須執行會話才能計算出所有計算結果。這樣的痛苦,不是嗎?

    例如,tf.Session()用於構建會話,tf.Variable()用於將權重分配給變數,依此類推。初始化後,可以構建一個神經網路,用於TensorFlow中的訓練。

    文件

    PyTorch和TensorFlow的文件廣泛可用,考慮到兩者都在開發中,而PyTorch是最近釋出的,與TensorFlow相比。人們可以在兩個框架上找到大量文件,其中實現得到了很好的描述。

    這兩個框架都提供了大量的教程,這有助於人們專注於透過用例學習和實現它們。

    適應裝置

    PyTorch和TensorFlow都有GPU擴充套件可用。這兩個框架之間的主要區別在於,當考慮GPU進行TensorFlow計算時,它會消耗所有可用GPU的整個記憶體。透過為特定程序分配正確的GPU裝置可以避免這種情況。 tf.device()為您提供選擇首選GPU的選項。由於TensorFlow是一種靜態計算圖形方法,因此可以輕鬆最佳化此框架上的程式碼。

    在PyTorch上,變數可以與權重一起分配並同時執行,其中框架構建計算所需的圖形。這方面的GPU使用已經透過CUDA安裝啟用,即使在嘗試在CPU上執行時,PyTorch也總是試圖找到要計算的GPU。因此,必須提供X.cpu()擴展才能在CPU上執行它。

    在TensorFlow tf.device(/ cpu:0):引數用於在CPU上執行它。也可以選擇使用tf.device(/ gpu:0)的GPU來選擇第一個GPU或tf.device(/ gpu:1)來選擇第二個GPU。

    模型視覺化

    視覺化是理解模型效能和工作的關鍵。 TensorFlow具有圖形和模型TensorBoard的實時表示功能,非常方便。 在這裡,人們不僅能夠獲得神經網路的圖形表示,還能夠獲得實時的損失和準確度圖,其描繪了模型在特定迭代中的精確度。 這是一些例子:

    這是一個實時分析,與PyTorch相比,TensorFlow擅長,而PyTorch完全缺乏此功能。 您還可以視覺化神經網路的流程圖,包括音訊檔案(如果您的資料中存在),這非常棒。

    結論

    在未來,PyTorch可能會像TensorBoard一樣新增視覺化功能。 PyTorch因其動態的計算方法和簡單性而越來越受歡迎。 建議初學者在繼續使用TensorFlow之前在PyTorch上工作,這有助於他們專注於模型而不是花時間構建圖形。

  • 中秋節和大豐收的關聯?
  • 2020款雷克薩斯ux還值得買嘛?