简述PyTorch
文章目錄
- 簡述PyTorch
- Pytorch的安裝
- PyTorch包的結構
- PyTorch的主要模塊
- 1.torch模塊
- 2.torch.Tensor模塊
- 3.torch.sparse模塊
- 4.torch.cuda模塊
- 5.torch.nn模塊
- 6.torch.nn.functional函數模塊
- 7.torch.nn.init模塊
- 8.torch.optim模塊
- 9.torch.autograd模塊
- 10.torch.distributed模塊
- 11.torch.distributions模塊
- 12.torch.hub模塊
- 13.torch.jit模塊
- 14.torch.multiprocessing模塊
- 15.torch.random模塊
- 16.torch.onnx模塊
- PyTorch的輔助工具模塊
- 1.torch.utils.bottleneck模塊
- 2.torch.utils.checkpoint模塊
- 3.torch.utils.cpp_extension模塊
- 4.torch.utils.data模塊
- 5.torch.utils.dlpacl模塊
- 6.torch.utils.tensorboard模塊
簡述PyTorch
Pytorch的安裝
為了能夠使用PyTorch,首先需要有Python的運行環境,一般來說推薦選擇Anaconda的Python環境。
進入Anaconda官網針對操作系統和Python版本選擇不同的Anaconda安裝包下載安裝。
安裝好Anaconda后就可以使用conda命令了,這也是Anaconda的Python環境管理命令。Windows系統可以打開Anaconda Prompt,在命令行界面運行conda --help,來查看Anaconda的幫助文件。
在安裝好Anaconda后可以創建一個虛擬環境,具體的命令為conda create -n XXX python=3.7。第一個參數是-n,后面緊跟著虛擬環境的名字,另一個參數指定Python的版本。Anaconda會自動安裝好初始的依賴并設置好具體的環境變量。創建好環境后可以使用conda activate XXX來激活創建好的虛擬環境。
在激活虛擬環境后,安裝Pytorch包。
在使用GPU運行環境的情況下,使用命令conda install pytorch torchvision cudatoolkit=10.0 -c pytorch安裝;在僅使用CPU的情況下,通過命令conda install pytorch torchvision -c pytorch來安裝。安裝好后使用下面的命令測試PyTorch是否被正確安裝。
PyTorch包的結構
PyTorch的主要模塊
1.torch模塊
torch模塊本身包含了PyTorh經常使用的一些激活函數以及PyTorch張量的操作。
例如torch.sigmoid、torch.relu、torch.tanh以及torch.mm、torch.select、torch.zeros、torch.randn等。
2.torch.Tensor模塊
這一模塊定義了torch中的張量類型,包括不同的數值類型以及一定的維數和形狀,同時也包含一些方法返回新的張量或者更改當前的張量。
值得注意的是如果張量的某個類方法會返回張量,如果張量方法后綴帶下劃線,則該方法會修改張量本身的數據,反之則會返回新的張量。 例如Tensor.add會讓當前張量和輸入參數張量做加法,返回新的張量;而Tensor.add_會改變當前張量的值,新的值為舊的值和輸入參數之和。
3.torch.sparse模塊
該模塊定義了稀疏張量,用一個長整型定義非零元素的位置,用浮點數張量定義對應非零元素的值。稀疏張量之間可以做元素加、減、乘、除運算和矩陣乘法。
4.torch.cuda模塊
該模塊定義了與CUDA運算相關的一系列函數。
5.torch.nn模塊
這是一個非常重要的模塊,是PyTorch神經網絡模塊化的核心。這個模塊定義了一系列模塊,包括卷積層nn.ConvNd(N=1,2,3)和線性層nn.Linear等。
當構建深度學習模型時,可以通過繼承nn.Module類并重寫forward方法來實現一個新的神經網絡。
另外torch.nn中也定義了一系列的損失函數,包括平方損失函數torch.nn.MSELoss、交叉熵損失函數torch.nn.CrossEntropyLoss等。
6.torch.nn.functional函數模塊
該模塊定義了一些和神經網絡相關的函數,包括卷積函數和池化函數等。
7.torch.nn.init模塊
該模塊定義了神經網絡權重的初始化,包括均勻初始化torch.nn.init.uniform_、正態分布歸一化torch.nn.init.normal_等。和前文所述一致,這些函數或方法如果以下劃線結尾則會直接改變作用張量的值,返回改變后的張量。
8.torch.optim模塊
該模塊定義了一系列優化器、學習率衰減算法的子模塊等。
9.torch.autograd模塊
該模塊是PyTorch的自動微分算法模塊,定義了一系列自動微分函數,包括torch.autograd.backward函數用于在求得損失函數之后進行反向梯度傳播、torch.autograd.grad用于一個標量張量對另一個張量求導以及在代碼中設置不參與求導的部分等。
10.torch.distributed模塊
該模塊是PyTorch的分布式計算模塊提供并行運行環境。
11.torch.distributions模塊
該模塊提供了一系列類使得PyTorch能夠對不同的分布式進行采樣并且生成概率采樣過程的計算圖。
12.torch.hub模塊
該模塊提供了一系列預訓練的模型供用戶使用。
13.torch.jit模塊
這一模塊是PyTorch的即時編譯器模塊,可以將動態度轉化為可以優化和序列化的靜態圖,通過預先定義好的張量追蹤整個動態圖的構建過程,得到最終構建出來的動態圖,然后轉換為靜態圖。
14.torch.multiprocessing模塊
該模塊定義了多進程API,可以啟用不同的進程,每個進程運行不同的深度學習模型,并且能夠在進程間共享張量。
15.torch.random模塊
這一模塊提供了一系列方法來保存和設置隨機數生成器的狀態,包括使用get_rng_state獲取當前隨機數生成器狀態、set_rng_state設置當前隨機數生成器狀態、manual_seed設置隨機種子等。
16.torch.onnx模塊
該模塊定義了導出和載入ONNX格式的深度學習模型描述文件。
PyTorch的輔助工具模塊
torch.utils提供了一系列的工具幫助神經網絡的訓練、測試和結構優化,主要包括以下6個子模塊:
1.torch.utils.bottleneck模塊
這一模塊用來檢查深度學習模型中模塊的運行時間,從而找到導致性能瓶頸的那些模塊,通過優化這些模塊的運行時間從而優化整個深度學習模型的性能。
2.torch.utils.checkpoint模塊
這一模塊可以用來節約深度學習使用的內存。因為要進行梯度反向傳播,在構建計算圖的時候需要保存中間數據,而這些數據大大增加了深度學習的內存消耗。為了減少內存消耗,讓Mini-batch的大小提高,從而提升深度學習模型的性能和優化時的穩定性,可以使用這個模塊來記錄中間數據的計算過程。
3.torch.utils.cpp_extension模塊
這一模塊定義了C++擴展,包含CppExtension和CUDAExtension兩個類。
4.torch.utils.data模塊
這一模塊引入了數據集和數據加載器的概念,前者代表了包含所有數據的數據集,通過索引能夠得到某一條特定的數據,后者通過對數據集的包裝,可以對數據集進行隨機Shuffle和Sample,得到一系列打亂數據順序的Mini-batch。
5.torch.utils.dlpacl模塊
該模塊定義了PyTorch張量和DLPack張量存儲格式之間的轉換,用于不同框架之間張量數據的交換。
6.torch.utils.tensorboard模塊
這一模塊是對TensorBoard數據可視化工具的支持,有了這一模塊在訓練過程中可以很方便的觀察中間輸出的張量,也可以方便地調試深度學習模型。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 算法分析与设计——分治法最近点对
- 下一篇: PyTorch模块类