Pytorch 基礎學習1_張量與自動微分

► 前言

 PytorchFacebook AI Research於2017年所釋出的深度學習框架,相較於TensorflowPytorch 語法簡潔易懂更加容易快速上手。本篇採用Colab介紹PytorchTensor的用法,以及Tensor中自動微分的使用並透過下面所述的部分使用PyTorch建構一個簡單的線性回歸網路。如果對於Colab的使用上有疑惑或是不清楚的可以點擊連結觀看一下。

► 張量

Tensor (張量) 神經網路的基本數據結構,神經網路的輸入、輸出與權重都是張量所組成,神經網路中的各種計算與變換都是基於張量進行運算。TensorPytorch中使用語法與numpy類似並可以進行相互轉換,在Pytorch中Tensor支援CUDAGPU加速,因此Pytorch定義了七種CPU tensor類型與八種GPU tensor類型,如下圖所示。





首先引入torch函式庫,能夠進行張量在 CPU/GPU 的運算。Numpy為數學運算相關的函式庫,能夠支援大量維度的矩陣運算,因此通過引用這些函式庫進行後續的應用。

透過下列方式進行張量的建立


在Pytorch中Tensor運算可以使用CUDA進行GPU加速,透過Colab調用CPUGPU進行數值運算,比較CPUGPU所需時間,通過下方簡單範例可以看出,在進行大量運算時GPU所需時間明顯比CPU還要少。



 自動微分

訓練神經網路時常用算法就是反向傳播算法(Back Propagation)反向傳播可以計算網絡中所有權重計算損失函數的梯度,透過模型權重更新來最小化損失函數。在Pytorch中能夠透過Autograd模組來實現反向傳播計算能夠避免手動計算的複雜過程。

透過以下式子來計算autograd的計算結果與手動求導計算結果的誤差,通過 autograd所出來的結果中,可以得知 autograd的 計算結果與利用公式手動計算的結果為一致。




利用上述所說的tensor與autograd,我們將建立一個線性回歸的方程式,能夠輸入攝式溫度,透過深度學習,算出華氏溫度值。




對於上面的運算進行圖形繪製,可以看出w與b收斂為1.8與32,華式與攝氏溫度換算公式逐漸進行擬合。透過輸入攝氏10度進行華式溫度預測,輸出結果也相當接近華氏溫度50度。



 ► 結論

 透過以上講解,相信已經了解Pytorch中tensor與Autograd的基礎應用了,並且可以通過tensor與Autograd進行簡單的線性回歸模型了。 

 ► 參考資料

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

評論