► 前言
Pytorch為Facebook AI Research於2017年所釋出的深度學習框架,相較於Tensorflow,Pytorch 語法簡潔易懂更加容易快速上手。本篇採用Colab介紹Pytorch中Tensor的用法,以及Tensor中自動微分的使用並透過下面所述的部分使用PyTorch建構一個簡單的線性回歸網路。如果對於Colab的使用上有疑惑或是不清楚的可以點擊連結觀看一下。
► 張量
Tensor (張量) 為神經網路的基本數據結構,神經網路的輸入、輸出與權重都是張量所組成,神經網路中的各種計算與變換都是基於張量進行運算。Tensor在Pytorch中使用語法與numpy類似並可以進行相互轉換,在Pytorch中Tensor支援CUDA的GPU加速,因此在Pytorch定義了七種CPU tensor類型與八種GPU tensor類型,如下圖所示。
首先引入torch函式庫,能夠進行張量在 CPU/GPU 的運算。Numpy為數學運算相關的函式庫,能夠支援大量維度的矩陣運算,因此通過引用這些函式庫進行後續的應用。
透過下列方式進行張量的建立
在Pytorch中Tensor運算可以使用CUDA進行GPU加速,透過Colab調用CPU與GPU進行數值運算,比較CPU與GPU所需時間,通過下方簡單範例可以看出,在進行大量運算時GPU所需時間明顯比CPU還要少。
► 自動微分
訓練神經網路時常用算法就是反向傳播算法(Back Propagation),反向傳播可以計算網絡中所有權重計算損失函數的梯度,透過模型權重更新來最小化損失函數。在Pytorch中能夠透過Autograd模組來實現反向傳播計算能夠避免手動計算的複雜過程。
透過以下式子來計算autograd的計算結果與手動求導計算結果的誤差,通過 autograd所出來的結果中,可以得知 autograd的 計算結果與利用公式手動計算的結果為一致。
利用上述所說的tensor與autograd,我們將建立一個線性回歸的方程式,能夠輸入攝式溫度,透過深度學習,算出華氏溫度值。
對於上面的運算進行圖形繪製,可以看出w與b收斂為1.8與32,華式與攝氏溫度換算公式逐漸進行擬合。透過輸入攝氏10度進行華式溫度預測,輸出結果也相當接近華氏溫度50度。
► 結論
透過以上講解,相信已經了解Pytorch中tensor與Autograd的基礎應用了,並且可以通過tensor與Autograd進行簡單的線性回歸模型了。
評論