PyTorch 學習

PyTorch 學習 <1>
1. Pytorch的一些優點:
PyTorch是FaceBook推出的一個深度學習框架。PyTorch有這些特點:① 簡潔:PyTorch設計追求最小的封裝,儘量避免重複造輪子。② 速度:PyTorch的靈活性不以犧牲速度爲代價,並且在許多評測中,PyTorch的速度表現勝於TensorFlow和Keras等框架。③ 易用:PyTorch是所有框架中面向對象設計的最優雅的一個。④ 活躍的社區:PyTorch提供了完整的文檔支持,循序漸進的指南,有着活躍的用戶社區。除了以上一些原因還有 一 些基於本身PyTorch的設計特性-自動求導等。
2. 簡單介紹
張量(Tensor)
Tensor是PyTorch中的一個重要數據結構,可以認爲是一個高維數組。可以是數(標量)、一維數組(向量)、二維數組(矩陣)或者更高維數組。基於張量計算,可以利用GPU並行計算。與python中的numpy數組類似。

In: import torch as t
In: x=t.Tensor(2,2)
    x
out:
tensor([[-9.6084e+28,  4.5752e-41],
        [ 7.3476e+18,  3.0925e-41]])

In: # Tensor與numpy之間簡單的轉換
In: a=t.Tensor(5)                                                                                                                                            
In:  a                                                                                                                                                        
Out: tensor([-9.6084e+28,  4.5752e-41,  1.8284e+19,  3.0925e-41,  1.4013e-45])

In [26]: b=a.numpy()     #Tensor轉換成numpy                                                                                                                                         
In [27]: b                                                                                                                                                        
Out[27]: 
array([-9.6084442e+28,  4.5752395e-41,  1.8283541e+19,  3.0925256e-41,
        1.4012985e-45], dtype=float32)
# numpy 轉換爲Tensor
In [28]: import numpy as np                                                                                                                                       
In [29]: c=np.ones(5)                                                                                                                                             
In [30]: c                                                                                                                                                        
Out[30]: array([1., 1., 1., 1., 1.])
In [31]: d=t.from_numpy(c)                                                                                                                                        
In [32]: d                                                                                                                                                        
Out[32]: tensor([1., 1., 1., 1., 1.], dtype=torch.float64)

3. Autograd:自動微分
Deep learning 的本質是通過反向傳播算法進反向求導,然後不斷調整參數,使得模型學習到更優的參數以求得到更好的結果。其中在PyTorch中有autograd實現了這個功能。在tensor上所有操作,Autograd都能爲他們自動提供微分,從而避免手動求導的複雜過程。
autograd.Variable是Autograd中的核心類,它簡單封裝了Tensor,並且支持所有的Tensor操作。Tensor被封裝成variable後,可以調用它的.backward實現反向傳播,自動計算所有梯度。

In [34]: from torch.autograd import Variable                                                                                                                      
In [35]: X=Variable(t.ones(2,2),requires_grad=True)  #使用Tensor創建一個Variable                                                                                                              
In [36]: x                                                                                                                                                        
Out[36]: 
tensor([[-9.6084e+28,  4.5752e-41],
        [ 7.3476e+18,  3.0925e-41]])

更多細節或者具體操作可以查看PyTorch官方操作手冊:https://pytorch-cn.readthedocs.io/zh/latest/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章