日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简述PyTorch

發(fā)布時間:2025/4/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简述PyTorch 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡述PyTorch
    • Pytorch的安裝
    • PyTorch包的結(jié)構(gòu)
      • PyTorch的主要模塊
        • 1.torch模塊
        • 2.torch.Tensor模塊
        • 3.torch.sparse模塊
        • 4.torch.cuda模塊
        • 5.torch.nn模塊
        • 6.torch.nn.functional函數(shù)模塊
        • 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的運(yùn)行環(huán)境,一般來說推薦選擇Anaconda的Python環(huán)境。

進(jìn)入Anaconda官網(wǎng)針對操作系統(tǒng)和Python版本選擇不同的Anaconda安裝包下載安裝。

安裝好Anaconda后就可以使用conda命令了,這也是Anaconda的Python環(huán)境管理命令。Windows系統(tǒng)可以打開Anaconda Prompt,在命令行界面運(yùn)行conda --help,來查看Anaconda的幫助文件。


在安裝好Anaconda后可以創(chuàng)建一個虛擬環(huán)境,具體的命令為conda create -n XXX python=3.7。第一個參數(shù)是-n,后面緊跟著虛擬環(huán)境的名字,另一個參數(shù)指定Python的版本。Anaconda會自動安裝好初始的依賴并設(shè)置好具體的環(huán)境變量。創(chuàng)建好環(huán)境后可以使用conda activate XXX來激活創(chuàng)建好的虛擬環(huán)境。


在激活虛擬環(huán)境后,安裝Pytorch包。

在使用GPU運(yùn)行環(huán)境的情況下,使用命令conda install pytorch torchvision cudatoolkit=10.0 -c pytorch安裝;在僅使用CPU的情況下,通過命令conda install pytorch torchvision -c pytorch來安裝。安裝好后使用下面的命令測試PyTorch是否被正確安裝。

PyTorch包的結(jié)構(gòu)

PyTorch的主要模塊

1.torch模塊

torch模塊本身包含了PyTorh經(jīng)常使用的一些激活函數(shù)以及PyTorch張量的操作。

例如torch.sigmoid、torch.relu、torch.tanh以及torch.mm、torch.select、torch.zeros、torch.randn等。

2.torch.Tensor模塊

這一模塊定義了torch中的張量類型,包括不同的數(shù)值類型以及一定的維數(shù)和形狀,同時也包含一些方法返回新的張量或者更改當(dāng)前的張量。

值得注意的是如果張量的某個類方法會返回張量,如果張量方法后綴帶下劃線,則該方法會修改張量本身的數(shù)據(jù),反之則會返回新的張量。 例如Tensor.add會讓當(dāng)前張量和輸入?yún)?shù)張量做加法,返回新的張量;而Tensor.add_會改變當(dāng)前張量的值,新的值為舊的值和輸入?yún)?shù)之和。

3.torch.sparse模塊

該模塊定義了稀疏張量,用一個長整型定義非零元素的位置,用浮點數(shù)張量定義對應(yīng)非零元素的值。稀疏張量之間可以做元素加、減、乘、除運(yùn)算和矩陣乘法。

4.torch.cuda模塊

該模塊定義了與CUDA運(yùn)算相關(guān)的一系列函數(shù)。

5.torch.nn模塊

這是一個非常重要的模塊,是PyTorch神經(jīng)網(wǎng)絡(luò)模塊化的核心。這個模塊定義了一系列模塊,包括卷積層nn.ConvNd(N=1,2,3)和線性層nn.Linear等。

當(dāng)構(gòu)建深度學(xué)習(xí)模型時,可以通過繼承nn.Module類并重寫forward方法來實現(xiàn)一個新的神經(jīng)網(wǎng)絡(luò)。

另外torch.nn中也定義了一系列的損失函數(shù),包括平方損失函數(shù)torch.nn.MSELoss、交叉熵?fù)p失函數(shù)torch.nn.CrossEntropyLoss等。

6.torch.nn.functional函數(shù)模塊

該模塊定義了一些和神經(jīng)網(wǎng)絡(luò)相關(guān)的函數(shù),包括卷積函數(shù)和池化函數(shù)等。

7.torch.nn.init模塊

該模塊定義了神經(jīng)網(wǎng)絡(luò)權(quán)重的初始化,包括均勻初始化torch.nn.init.uniform_、正態(tài)分布?xì)w一化torch.nn.init.normal_等。和前文所述一致,這些函數(shù)或方法如果以下劃線結(jié)尾則會直接改變作用張量的值,返回改變后的張量。

8.torch.optim模塊

該模塊定義了一系列優(yōu)化器、學(xué)習(xí)率衰減算法的子模塊等。

9.torch.autograd模塊

該模塊是PyTorch的自動微分算法模塊,定義了一系列自動微分函數(shù),包括torch.autograd.backward函數(shù)用于在求得損失函數(shù)之后進(jìn)行反向梯度傳播、torch.autograd.grad用于一個標(biāo)量張量對另一個張量求導(dǎo)以及在代碼中設(shè)置不參與求導(dǎo)的部分等。

10.torch.distributed模塊

該模塊是PyTorch的分布式計算模塊提供并行運(yùn)行環(huán)境。

11.torch.distributions模塊

該模塊提供了一系列類使得PyTorch能夠?qū)Σ煌姆植际竭M(jìn)行采樣并且生成概率采樣過程的計算圖。

12.torch.hub模塊

該模塊提供了一系列預(yù)訓(xùn)練的模型供用戶使用。

13.torch.jit模塊

這一模塊是PyTorch的即時編譯器模塊,可以將動態(tài)度轉(zhuǎn)化為可以優(yōu)化和序列化的靜態(tài)圖,通過預(yù)先定義好的張量追蹤整個動態(tài)圖的構(gòu)建過程,得到最終構(gòu)建出來的動態(tài)圖,然后轉(zhuǎn)換為靜態(tài)圖。

14.torch.multiprocessing模塊

該模塊定義了多進(jìn)程API,可以啟用不同的進(jìn)程,每個進(jìn)程運(yùn)行不同的深度學(xué)習(xí)模型,并且能夠在進(jìn)程間共享張量。

15.torch.random模塊

這一模塊提供了一系列方法來保存和設(shè)置隨機(jī)數(shù)生成器的狀態(tài),包括使用get_rng_state獲取當(dāng)前隨機(jī)數(shù)生成器狀態(tài)、set_rng_state設(shè)置當(dāng)前隨機(jī)數(shù)生成器狀態(tài)、manual_seed設(shè)置隨機(jī)種子等。

16.torch.onnx模塊

該模塊定義了導(dǎo)出和載入ONNX格式的深度學(xué)習(xí)模型描述文件。

PyTorch的輔助工具模塊

torch.utils提供了一系列的工具幫助神經(jīng)網(wǎng)絡(luò)的訓(xùn)練、測試和結(jié)構(gòu)優(yōu)化,主要包括以下6個子模塊:

1.torch.utils.bottleneck模塊

這一模塊用來檢查深度學(xué)習(xí)模型中模塊的運(yùn)行時間,從而找到導(dǎo)致性能瓶頸的那些模塊,通過優(yōu)化這些模塊的運(yùn)行時間從而優(yōu)化整個深度學(xué)習(xí)模型的性能。

2.torch.utils.checkpoint模塊

這一模塊可以用來節(jié)約深度學(xué)習(xí)使用的內(nèi)存。因為要進(jìn)行梯度反向傳播,在構(gòu)建計算圖的時候需要保存中間數(shù)據(jù),而這些數(shù)據(jù)大大增加了深度學(xué)習(xí)的內(nèi)存消耗。為了減少內(nèi)存消耗,讓Mini-batch的大小提高,從而提升深度學(xué)習(xí)模型的性能和優(yōu)化時的穩(wěn)定性,可以使用這個模塊來記錄中間數(shù)據(jù)的計算過程。

3.torch.utils.cpp_extension模塊

這一模塊定義了C++擴(kuò)展,包含CppExtension和CUDAExtension兩個類。

4.torch.utils.data模塊

這一模塊引入了數(shù)據(jù)集和數(shù)據(jù)加載器的概念,前者代表了包含所有數(shù)據(jù)的數(shù)據(jù)集,通過索引能夠得到某一條特定的數(shù)據(jù),后者通過對數(shù)據(jù)集的包裝,可以對數(shù)據(jù)集進(jìn)行隨機(jī)Shuffle和Sample,得到一系列打亂數(shù)據(jù)順序的Mini-batch。

5.torch.utils.dlpacl模塊

該模塊定義了PyTorch張量和DLPack張量存儲格式之間的轉(zhuǎn)換,用于不同框架之間張量數(shù)據(jù)的交換。

6.torch.utils.tensorboard模塊

這一模塊是對TensorBoard數(shù)據(jù)可視化工具的支持,有了這一模塊在訓(xùn)練過程中可以很方便的觀察中間輸出的張量,也可以方便地調(diào)試深度學(xué)習(xí)模型。

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的简述PyTorch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。