?
?????作者簡(jiǎn)介:大數(shù)據(jù)專業(yè)碩士在讀,CSDN人工智能領(lǐng)域博客專家,阿里云專家博主,專注大數(shù)據(jù)與人工智能知識(shí)分享,公眾號(hào):GoAI的學(xué)習(xí)小屋,免費(fèi)分享書(shū)籍、簡(jiǎn)歷、導(dǎo)圖等資料,更有交流群分享AI和大數(shù)據(jù),加群方式公眾號(hào)回復(fù)“加群”或??點(diǎn)擊鏈接。
??專欄推薦:??點(diǎn)擊訪問(wèn)《計(jì)算機(jī)視覺(jué)》:長(zhǎng)期更新不限于深度學(xué)習(xí)、OCR、目標(biāo)檢測(cè)、圖像分類、分割等方向總結(jié)資料。? ? ? ??點(diǎn)擊訪問(wèn)《深入淺出OCR》:? 對(duì)標(biāo)全網(wǎng)最全OCR教程。以上目前活動(dòng)僅29.9,感興趣小伙伴可關(guān)注下。
??學(xué)習(xí)者福利:強(qiáng)烈推薦一個(gè)優(yōu)秀AI學(xué)習(xí)網(wǎng)站,包括機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等理論與實(shí)戰(zhàn)教程,非常適合AI學(xué)習(xí)者。??網(wǎng)站鏈接。
??技術(shù)控福利:程序員兼職社區(qū)招募!技術(shù)范圍廣,CV、NLP方向均可,要求有一定基礎(chǔ),最好是研究生及以上或有工作經(jīng)驗(yàn),歡迎大佬加入!群內(nèi)Python、c++、Matlab等各類編程語(yǔ)言單應(yīng)有盡有, 資源靠譜、費(fèi)用自談,有意向直接??訪問(wèn)。
往期學(xué)習(xí)資料推薦:
1.Pytorch實(shí)戰(zhàn)筆記_GoAI的博客-CSDN博客
2.Pytorch入門(mén)教程_GoAI的博客-CSDN博客
本系列目錄:
PyTorch學(xué)習(xí)筆記(一):PyTorch環(huán)境安裝
PyTorch學(xué)習(xí)筆記(二):簡(jiǎn)介與基礎(chǔ)知識(shí)
PyTorch學(xué)習(xí)筆記(三):PyTorch主要組成模塊
PyTorch學(xué)習(xí)筆記(四):PyTorch基礎(chǔ)實(shí)戰(zhàn)
PyTorch學(xué)習(xí)筆記(五):模型定義、修改、保存
PyTorch學(xué)習(xí)筆記(六):PyTorch進(jìn)階訓(xùn)練技巧
?PyTorch學(xué)習(xí)筆記(七):PyTorch可視化
?PyTorch學(xué)習(xí)筆記(八):PyTorch生態(tài)簡(jiǎn)介
后續(xù)繼續(xù)更新?。。。?/p>
1.?PyTorch簡(jiǎn)介
- 概念:由Facebook人工智能研究小組開(kāi)發(fā)的一種基于Lua編寫(xiě)的Torch庫(kù)的Python實(shí)現(xiàn)的深度學(xué)習(xí)庫(kù)
- 優(yōu)勢(shì):簡(jiǎn)潔、上手快、具有良好的文檔和社區(qū)支持、項(xiàng)目開(kāi)源、支持代碼調(diào)試、豐富的擴(kuò)展庫(kù)
2 PyTorch基礎(chǔ)知識(shí)
2.1張量
- 分類:0維張量(標(biāo)量)、1維張量(向量)、2維張量(矩陣)、3維張量(時(shí)間序列)、4維張量(圖像)、5維張量(視頻)
- 概念:一個(gè)數(shù)據(jù)容器,可以包含數(shù)據(jù)、字符串等
import torch
# 創(chuàng)建tensor
x = torch.rand(4, 3)
print(x)
# 構(gòu)造數(shù)據(jù)類型為long,數(shù)據(jù)是0的矩陣
x = torch.zeros(4, 3, dtype=torch.long)
print(x)
tensor([[0.9515, 0.6332, 0.8228],
[0.3508, 0.0493, 0.7606],
[0.7326, 0.7003, 0.1925],
[0.1172, 0.8946, 0.9501]])
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
-
常見(jiàn)的構(gòu)造Tensor的函數(shù):
函數(shù) 功能 Tensor(*sizes) 基礎(chǔ)構(gòu)造函數(shù) tensor(data) 類似于np.array ones(*sizes) 全1 zeros(*sizes) 全0 eye(*sizes) 對(duì)角為1,其余為0 arange(s,e,step) 從s到e,步長(zhǎng)為step linspace(s,e,steps) 從s到e,均勻分成step份 rand/randn(*sizes) rand是[0,1)均勻分布;randn是服從N(0,1)的正態(tài)分布 normal(mean,std) 正態(tài)分布(均值為mean,標(biāo)準(zhǔn)差是std) randperm(m) 隨機(jī)排列 -
操作:
- 使用索引表示的變量與原數(shù)據(jù)共享內(nèi)存,即修改其中一個(gè),另一個(gè)也會(huì)被修改
- 使用
torch.view
改變tensor的大小 - 廣播機(jī)制:當(dāng)對(duì)兩個(gè)形狀不同的Tensor按元素運(yùn)算時(shí),可能會(huì)觸發(fā)廣播(broadcasting)機(jī)制
# 使用view改變張量的大小
x = torch.randn(5, 4)
y = x.view(20)
z = x.view(-1, 5) # -1是指這一維的維數(shù)由其他維度決定
print(x.size(), y.size(), z.size())
torch.Size([5, 4]) torch.Size([20]) torch.Size([4, 5])?
x = tensor([[1, 2]])
y = tensor([[1],
[2],
[3]])
x + y = tensor([[2, 3],
[3, 4],
[4, 5]])
2.2 自動(dòng)求導(dǎo)
-
autograd
包:提供張量上的自動(dòng)求導(dǎo)機(jī)制 - 原理:如果設(shè)置
.requires_grad
為True
,那么將會(huì)追蹤張量的所有操作。當(dāng)完成計(jì)算后,可以通過(guò)調(diào)用.backward()
自動(dòng)計(jì)算所有的梯度。張量的所有梯度將會(huì)自動(dòng)累加到.grad
屬性 -
Function
:Tensor
和Function
互相連接生成了一個(gè)無(wú)環(huán)圖 (acyclic graph),它編碼了完整的計(jì)算歷史。每個(gè)張量都有一個(gè).grad_fn
屬性,該屬性引用了創(chuàng)建Tensor
自身的Function
x = torch.ones(2, 2, requires_grad=True)
print(x)
tensor([[1., 1.],
[1., 1.]], requires_grad=True)
y = x ** 2
print(y)
tensor([[1., 1.],
[1., 1.]], grad_fn=<PowBackward0>)
z = y * y * 3
out = z.mean()
print("z = ", z)
print("z mean = ", out)
z = tensor([[3., 3.],
[3., 3.]], grad_fn=<MulBackward0>)
z mean = tensor(3., grad_fn=<MeanBackward0>)
?
?grad
的反向傳播:運(yùn)行反向傳播,梯度都會(huì)累加之前的梯度,所以一般在反向傳播之前需把梯度清零
out.backward()
print(x.grad)
tensor([[3., 3.],
[3., 3.]])
# 反向傳播累加
out2 = x.sum()
out2.backward()
print(x.grad)
tensor([[4., 4.],
[4., 4.]])
2.3并行計(jì)算
-
目的:通過(guò)使用多個(gè)GPU參與訓(xùn)練,加快訓(xùn)練速度,提高模型學(xué)習(xí)的效果
-
CUDA:通過(guò)使用NVIDIA提供的GPU并行計(jì)算框架,采用
cuda()
方法,讓模型或者數(shù)據(jù)遷移到GPU中進(jìn)行計(jì)算文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-406359.html -
并行計(jì)算方法:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-406359.html
- Network partitioning:將一個(gè)模型網(wǎng)絡(luò)的各部分拆分,分配到不同的GPU中,執(zhí)行不同的計(jì)算任務(wù)
- Layer-wise partitioning:將同一層模型拆分,分配到不同的GPU中,訓(xùn)練同一層模型的部分任務(wù)
- Data parallelism(主流):將不同的數(shù)據(jù)分配到不同的GPU中,執(zhí)行相同的任務(wù)
到了這里,關(guān)于PyTorch學(xué)習(xí)筆記(二):PyTorch簡(jiǎn)介與基礎(chǔ)知識(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!