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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

pytorch教程龙曲良21-25

發(fā)布時間:2024/4/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch教程龙曲良21-25 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

21合并與分割2

split
按照長度/單元長度拆分

c的shape是[2,32,8]aa,bb=c.split(1,dim=0)#操作單元是在0維度上操作,拆分單元長度是1aa,bb=c.split(2,dim=0)#報錯 dim=0長度才是2,但是拆分長度要求2,拆不開,split必須拆分c的shape是[3,32,8]aa,bb=c.split([2,1],dim=0)#操作單元是在0維度上操作,拆分單元長度是2和1 import torch a=torch.rand(32,8) b=torch.rand(32,8) c=torch.stack([a,b],dim=0) print(c.shape)#torch.Size([2, 32, 8]) c=torch.rand(5,32,8) aa,bb=c.split([4,1],dim=0)#在dim=0上 把5分成4,1 print(aa.shape)#torch.Size([4, 32, 8]) print(bb.shape)#torch.Size([1, 32, 8])aa,bb,cc=c.split([2,2,1],dim=0)#在dim=0上 把5分成2,2,1 print(aa.shape)#torch.Size([2, 32, 8]) print(bb.shape)#torch.Size([2, 32, 8]) print(cc.shape)#torch.Size([1, 32, 8])

chunk 要拆分幾個單位,split是拆分的單位多長

22數(shù)學(xué)運算
Math operation
? Add/minus/multiply/divide
? Matmul
? Pow
? Sqrt/rsqrt
? Round

basic
加減乘數(shù)可以直接用±*/ 其中//表示整除
也可用add sub mul div

matmul
矩陣乘法中
.*是相同位置相乘
.matmul是矩陣乘法
可以用@或者.matmul,.mm只用在2d

例子
(4,784)降維成(4,512) 所以(4,784)@(784,512),但是一般用于變換的矩陣w是寫成(ch-out,ch-in)所以784是in,512是out,所以要乘以w的轉(zhuǎn)置,w.t(),.t只用于二維的,其他要用transpose

大于2d的均值乘法

a[4,3,28,64] b[4,3,64,32] torch.matmul(a,b) #前兩維不變,后面(28,64)@(64,32)所以最終是[4,3,28,32]a[4,3,28,64] b[4,1,64,32] torch.matmul(a,b) #b中的1可以通過broadcast變成3,保持前兩維度相同,后面(28,64)@(64,32)所以最終是[4,3,28,32]a[4,3,28,64] b[4,64,32] torch.matmul(a,b) #b中的4不可以還是a中的3都不是1不能通過broadcast,所以報錯


power

求冪運算
a.pow(2)#平方
a2#平方
aa.sqrt()#平方根
aa.rsqrt()#平方根的導(dǎo)數(shù)
a
(0.5)#開方


exp log
log默認(rèn)以e為底,e=2.7183
改變底直接寫log2.(a)或者log10.(a)

a=torch.exp(torch.ones(2,2)) print(a) b=torch.log(a) c=torch.log2(a) d=torch.log10(a) print(b,c,d) ''' tensor([[2.7183, 2.7183],[2.7183, 2.7183]]) tensor([[1., 1.],[1., 1.]]) tensor([[1.4427, 1.4427],[1.4427, 1.4427]]) tensor([[0.4343, 0.4343],[0.4343, 0.4343]])'''

Approximation
近似值
? .floor() #下限 往小的取
? .ceil()#上限 天花板 往大的取
? .round()#四舍五入
? .trunc()#裁剪成整數(shù)部分
? .frac()#裁剪成小數(shù)部分


clamp
裁剪梯度
梯度離散 梯度很小趨近于0
梯度爆炸 梯度很大大于10,可以打印w.grad.norm(2)看這個數(shù)值

a=torch.rand(2,3)#0-1分布 print(a) grad=a*15#15倍放大 print(grad)print(grad.max()) print(grad.median()) print(grad.clamp(10))#(min)小于10的位置補成10print(grad)print(grad.clamp(0,10))#大于10的位置補成10 (min,max)''' tensor([[0.0980, 0.3470, 0.5863],[0.7546, 0.1118, 0.9067]]) tensor([[ 1.4703, 5.2043, 8.7948],[11.3190, 1.6768, 13.6002]]) tensor(13.6002) tensor(5.2043) tensor([[10.0000, 10.0000, 10.0000],[11.3190, 10.0000, 13.6002]]) tensor([[ 1.4703, 5.2043, 8.7948],[11.3190, 1.6768, 13.6002]]) tensor([[ 1.4703, 5.2043, 8.7948],[10.0000, 1.6768, 10.0000]]) '''

23統(tǒng)計屬性1

statistics
? norm
? mean sum
? prod
? max, min, argmin, argmax
? kthvalue, topk

norm
這里的norm是范數(shù)的意思,不是normalize正則化


norm-p

b.norm(1,dim=1)#在dim=1上進(jìn)行1的norm,是第二行的求和 shape是[2] 維度是1
b.norm(2,dim=0)#在dim=0上進(jìn)行2的norm,是第二行的求和結(jié)果再開方 shape是[2] 維度是1
對于c而言 dim=0是最外層的維度,取哪個維度的范數(shù)那個維度就消掉

mean, sum, min, max, prod(累乘)
argmax就是將整個tensor打平后max的索引值
argmin就是將整個tensor打平后min的索引值

a.argmax(dim=1)在每一行中找最大值的索引,可以理解為在手寫數(shù)字中找每張圖片中概率最大的那個label,dim=1是在10上做索引,返回的shape是[4]
如果在dim=0是在4上做索引,返回的shape是[10]

24屬性統(tǒng)計2

dim keepdim
keepdim是讓max之后的索引維度(本來是1維度 只有一行就是每張圖片最大值的索引值)和原來a的維度(本來是2維度 4行10列)保持一致

top-k k-th
top-k默認(rèn)返回最大的k個,找最小的k個largest設(shè)置為false
k-th返回第k小的value

compare

equal就是整體比
eq就是比每個內(nèi)容單獨比

25高階操作

where
適用于分布采樣,就是不規(guī)則的賦值,完成邏輯時序控制,這樣可以運行在gpu上

概率p越大越可能取a ,概率越小越可能取b,
p=0.5大于0.5取a,a值是0,小于0.5取b ,b值是1

gather


實現(xiàn)從reletive到global的一個映射
7,4,9到107,104,109
long是類型轉(zhuǎn)換

總結(jié)

以上是生活随笔為你收集整理的pytorch教程龙曲良21-25的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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