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

2022/06/02閱讀時間約 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 秘笈》。
為什麼會看到廣告
深智數位
深智數位
在大數據 (Big Data)、人工智慧 (Artificial Intelligence) 的發展年代,團隊憑著擁有技術與熱誠,在出版方面將豐富的科技知識給社會大眾。在訊息紛沓而來的氛圍,深智堅持讓讀者、學生、相關人員尋找最有效率、愉快的學習途徑,取得知識與專業。
留言0
查看全部
發表第一個留言支持創作者!