tensor的統計屬性

2022-07-30 12:42:15 字數 2344 閱讀 2843

目錄檢視範數

範數1:所有元素的絕對值的求和

範數2:所有元素的絕對值的平方和的開方

例子1:

a = torch.full([8],1)

b = a.view(2,4)

c = a.view(2,2,2)

a.norm(1),b.norm(1),c.norm(1)

#都是tensor(8)

a.norm(2),b.norm(2),c.norm(2)

#都是tensor(2.8284) 根號8

例子2:在指定的維數上面進行norm的檢視

a = torch.full([8],1)

b = a.view(2,4)

c = a.view(2,2,2)

b.norm(1,dim=1)

#tensor([4,4]) 一共兩行 按行取

max():矩陣中的最大值以及相應的index

min():矩陣中的最小值以及相應的index

mean():平均值

prod():累乘

sum():求和

argmax():返回最大值的index

argmin():返回最小值的index

argmax與argmin不帶引數的話,會將矩陣先打平之後再尋找最值的index,這樣找到的index一定只是一維的,而不是打平之前的index

argmax(dim=1)來指定進行比較的方向

a = torch.randn(4,10)

a.argmax(dim=1)

#[3,8,6,4]

dim引數:指定操作的相應位置在哪維

keepdim:在比較後保持維度,不刪除這一維

例子:

a = torch.rand(4,10)

print(a.max(dim=1))

torch.return_types.max(

values=tensor([0.9857, 0.8758, 0.5322, 0.9021]), #這裡的value的shape:dim=1

indices=tensor([5, 5, 4, 2]))

print(a.max(dim=1,keepdim=true))

torch.return_types.max(

values=tensor([[0.9857], #這裡的value的shape是【4,1】 dim=2

[0.8758],

[0.5322],

[0.9021]]),

indices=tensor([[5],

[5],

[4],

[2]]))

topk函式與max其實是一樣的,只不過topk返回的是前幾大的資料

例子:

a = torch.rand(4,10)

print(a.topk(3,dim=1))#返回前三大的資料

torch.return_types.topk(

values=tensor([[0.8964, 0.8960, 0.8854],

[0.9808, 0.8285, 0.7648],

[0.9556, 0.7625, 0.7507],

[0.8583, 0.6822, 0.6390]]),

indices=tensor([[2, 8, 0],

[2, 9, 5],

[8, 6, 2],

[3, 5, 4]]))

而預設選擇最小的方法:

a.topk(3,dim=1,largest=false)

kthvalue函式:返回第幾小的元素

例子:

a = torch.rand(4,10)

print(a.kthvalue(8,dim=1))

torch.return_types.kthvalue(

values=tensor([0.9058, 0.6853, 0.4763, 0.8167]),

indices=tensor([1, 0, 7, 3]))

對tensor中的所有資料進行比較,返回同樣shape的bytetensor

例子:

a:[4,10]

a>0

返回shape【4,10】的tensor

注意torch.eq(a,b)函式與torch.equal(a,b)的區別:

torch.eq(a,b):返回各個元素的比較(與原來的shape一樣)

torch.equal(a,b):返回true或者false

tensor的維度變換

expand與repeat用法 t 轉置 transpose轉置 permute函式 例子 a torch.rand 4,1,28,28 a.view 4,28 28 例子2 a torch.rand 4,1,28,28 a.view 4 1,28,28 表示我們現在只關注feature map這個...

常用的Tensor操作

1 通過tensor.view方法可以調整tensor的形狀,但必須保證調整去前後元素總數一致。view不會修改自身的資料,返回新的tensor與原tensor共享記憶體,即更改其中的乙個,另乙個也會跟這改變。2 實際中經常需要新增或減少某一維度,可用squeeze和unsqueeze這兩函式。im...

屬性和統計量

lmz 屬性是 的輸入量 統計量是 的輸出量 屬性本質上屬於程序的變數。變數一般寫在sv tv中。但是這樣寫的缺點在於不方便修改,每次修改都得深入程序模型。屬性的值一般都在init狀態下通過核心函式讀取,然後作為程序的變數使用。這樣我們就可以在 時不用深入底層就可以改變其值 屬性提公升 屬性中分 舉...