【深智書摘】同時搞定TensorFlow、PyTorch

閱讀時間約 4 分鐘
TensorFlow、PyTorch 是目前佔有率最高的深度學習框架,初學者常會問『應該選擇PyTorch或 TensorFlow套件』,依個人看法,PyTorch、TensorFlow好比倚天劍與屠龍刀,各有擅場,兩個套件的發展重點有所不同,例如在偵錯方面,PyTorch比較容易,但TensorFlow/Keras建模、訓練、預測都只要一行程式,另外,物件偵測主流演算法YOLO,第四版以TensorFlow開發,第五版則以PyTorch開發,若我們只懂TensorFlow,那就無法使用最新版了。
差異比較
PyTorch 認為兩個主要對手,『TensorFlow 1.x版把簡單的事情複雜化』,『Keras把複雜的事情太過簡化』,因而促使TensorFlow 2.x版依據Keras規格重新開發並納入TensorFlow中,現在Keras已變成TensorFlow最重要的模組。
而PyTorch特色如下:
1. Python First:PyTorch開發團隊認為Python及相關套件功能已經相當強大,不須另外發明輪子(Reinvent the wheel),直接與Python生態環境緊密結合。
2. 除錯容易:TensorFlow/Keras 提供 fit 一行指令即可進行模型訓練,雖然簡單,但不易偵錯(Debug),PyTorch須自行撰寫優化求解的程序,雖然繁瑣,但在過程中可插入任意的程式碼偵錯或查看預測結果、損失函數變化,不必等到模型訓練完成。
3. GPU 記憶體管理較佳,筆者使用GTX1050Ti,記憶體只有4GB 時,同時執行2個以TensorFlow 開發的Notebook 檔案時,常會發生記憶體不足的狀況,但使用PyTorch,即使3、4 個Notebook 檔案也沒有問題。
4. 程式可自行決定變數及模型要在 CPU 或 GPU 運算:雖然比較麻煩,但可優化記憶體的使用,TensorFlow則是自行偵測GPU,如果有。則預設會使用GPU運算,反之,會使用CPU。
另外,文件說明還是以TensorFlow/Keras較為詳盡,且較有系統性,PyTorch方面,筆者常須依靠谷大哥搜尋,這也是筆者撰寫PyTorch入門書籍的原因。
一致的學習路徑
雖然存在以上差異,PyTorch與TensorFlow基本設計概念是相通的,採用相同的approach,可以一併學會兩個套件。
梯度下降法是神經網路主要求解的方法,計算過程會使用張量 (Tensor) 運算,另外,在反向傳導的過程中,則要進行偏微分,計算梯度,如下圖:
圖一. 神經網路求解過程
基於上述求解過程的需求,大多數的深度學習套件至少會具備下列功能:
1. 張量運算:包括各種向量、矩陣運算。
2. 自動微分 (Auto Differentiation):透過偏微分計算梯度。
3. 提供各種神經層 (Layers) 及神經網路 (Neural Network) 模型構建。
因此,學習的路徑可以從簡單的張量運算開始,再逐漸熟悉高階的神經層函數,以奠定扎實的基礎。
圖二. 神經網路學習路徑
在上述學習路徑中,我們會發現TensorFlow/PyTorch基本設計概念是一致的:
1. TensorFlow/PyTorch張量 (Tensor) 均與NumPy陣列相容,不論是資料結構或是運算,包括 Broadcasting 機制。
2. 自動微分、梯度下降也是如此,只是語法不同而已。
3. 都支援順序型 (Sequential)、Functional API模型。
4. 均建議使用 Dataset/Data Loader 作為模型的資料來源。
►更詳盡的範例程式說明可參閱『同時搞定TensorFlow、PyTorch』。
《開發者傳授 PyTorch 秘笈》/ 陳昭明 著
本文節錄自深智數位出版之《開發者傳授 PyTorch 秘笈》。
為什麼會看到廣告
avatar-img
9會員
25內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
深智數位的沙龍 的其他內容
2020年VMware發布VMware vSphere 7.0,透過整合資料中心伺服器、靈活設定資源等方式降低了營運成本,同時還可在不增加成本的情況下提供給使用者高可用、災難恢復等進階特性。
行動通訊系統十年一代,從 1G 到 4G,歷經了「模擬、數位、資料、寬頻」四次技術變革,為全世界的億萬使用者帶來了「前所未有」的嶄新感受。尤其是 4G 技術開啟了行動網際網路時代,深刻改變了人們的生活方式。
隨著軟體規模、性能要求的不斷提升,分散式系統得到快速發展。分散式系統透過許多低成本節點的協作來完成原本需要龐大單體應用才能實現的功能,在降低硬體成本的基礎上,提升了軟體的可靠性、擴充性、靈活性。
一個互動列應用就像一塊積木,可以方便地與其他互動列應用組合在一起,進而完成高度複雜的工作。這就像只要掌握26個字母,就可以組合出近乎無限的單字。
2020年VMware發布VMware vSphere 7.0,透過整合資料中心伺服器、靈活設定資源等方式降低了營運成本,同時還可在不增加成本的情況下提供給使用者高可用、災難恢復等進階特性。
行動通訊系統十年一代,從 1G 到 4G,歷經了「模擬、數位、資料、寬頻」四次技術變革,為全世界的億萬使用者帶來了「前所未有」的嶄新感受。尤其是 4G 技術開啟了行動網際網路時代,深刻改變了人們的生活方式。
隨著軟體規模、性能要求的不斷提升,分散式系統得到快速發展。分散式系統透過許多低成本節點的協作來完成原本需要龐大單體應用才能實現的功能,在降低硬體成本的基礎上,提升了軟體的可靠性、擴充性、靈活性。
一個互動列應用就像一塊積木,可以方便地與其他互動列應用組合在一起,進而完成高度複雜的工作。這就像只要掌握26個字母,就可以組合出近乎無限的單字。
你可能也想看
Google News 追蹤
Thumbnail
本篇文章介紹如何使用 PyTorch 這個強大的工具程式庫來建立一個反饋類神經網路。從單變數的「墨西哥帽」模型學習,到設定類神經網路的結構和訓練方法,資料轉換、類神經網路創建以及訓練過程的步驟。此外,也分析訓練過程中的誤差趨勢,幫助理解模型性能,適合希望快速掌握 PyTorch 的人工智慧開發者。
Thumbnail
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 庫,底層由 C++ 實現,應用於人工智慧領域,如電腦視覺和自然語言處理等。 PyTorch 2.4 引入了多項新功能和改進,包括支援 Python 3.12、AOTInductor 凍結功能、新的高階 Python 自訂運算
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。 本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune 有關於安裝的部分可以參考友人的其他文章 Tesseract OCR - 繁體中文【安裝篇】 將所有資料
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
torchaudio 是 PyTorch 的官方音訊處理庫,提供了許多用於音訊數據讀取、轉換和處理的工具和功能。它旨在簡化音訊數據的加載、預處理和後續處理過程,同時與 PyTorch 緊密整合, 包括我們常常用於資料科學處理的Tensor資料。 這個篇章主要在分享我們如何使用標準的I/O進行讀
Thumbnail
本篇文章介紹如何使用 PyTorch 這個強大的工具程式庫來建立一個反饋類神經網路。從單變數的「墨西哥帽」模型學習,到設定類神經網路的結構和訓練方法,資料轉換、類神經網路創建以及訓練過程的步驟。此外,也分析訓練過程中的誤差趨勢,幫助理解模型性能,適合希望快速掌握 PyTorch 的人工智慧開發者。
Thumbnail
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 庫,底層由 C++ 實現,應用於人工智慧領域,如電腦視覺和自然語言處理等。 PyTorch 2.4 引入了多項新功能和改進,包括支援 Python 3.12、AOTInductor 凍結功能、新的高階 Python 自訂運算
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
透過這篇文章,我們將瞭解如何使用PyTorch實作圖神經網絡中的訊息傳遞機制,從定義消息傳遞的類別到實作消息傳遞過程。我們也探討了各種不同的消息傳遞機制,並通過對單次和多次傳遞過程的結果,可以看到節點特徵如何逐步傳遞與更新。
Thumbnail
本文主要筆記使用pytorch建立graph的幾個概念與實作。在傳統的神經網路模型中,數據點之間往往是互相連接和影響的,使用GNN,我們不僅處理單獨的數據點或Xb,而是處理一個包含多個數據點和它們之間連結的特徵。GNN的優勢在於其能夠將這些連結關係納入模型中,將關係本身作為特徵進行學習。
Thumbnail
微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。 本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune 有關於安裝的部分可以參考友人的其他文章 Tesseract OCR - 繁體中文【安裝篇】 將所有資料
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
torchaudio 是 PyTorch 的官方音訊處理庫,提供了許多用於音訊數據讀取、轉換和處理的工具和功能。它旨在簡化音訊數據的加載、預處理和後續處理過程,同時與 PyTorch 緊密整合, 包括我們常常用於資料科學處理的Tensor資料。 這個篇章主要在分享我們如何使用標準的I/O進行讀