常见的统计操作:
Norm:求范数
Mean sum :均值,求和
Prod: 累乘
Max,min,argmin,argmax : 最大值,最小值,最大值,最小值的位置
Kthvalue, topk : 第几个位置的位置或者值,top几 的值或者位置。
高阶统计操作:
Where 和 gather :根据条件选取源头,和查表的操作。
1, norm 范数,统计tensor范数的值
注意:norm 和normalize不同,normalize指的是归一化,正则化。这个norm指的是vector norm 向量范数。但是在pytorh中就变成了matix norm 和vector norm 有一点区别:
代码:
a = torch.full([8], 1)
b = a.view(2, 4)
c = a.view(2, 2, 2)
print(b) # shape : [2,4]
print(c)
# 对tensor所有元素求一范数,就是所有元素和
print(a.norm(1),b.norm(1),c.norm(1)) # tensor(8.) tensor(8.) tensor(8.)
# 对tensor所有元素求二范数,就是所有元素平方和,开根号。
print(a.norm(2),b.norm(2),c.norm(2)) # tensor(2.8284) tensor(2.8284) tensor(2.8284)
# 对第一个维度上的元素进行一范数
print(b.norm(1,dim=1)) # b-shape: [2,4] # tensor([4., 4.]) shape==>[2]
# 对第一个维度上的元素进行二范数
print(b.norm(2,dim=1)) # b-shape: [2,4] # tensor([2., 2.]) shape==>[2]
# 对第0个维度上的元素进行一范数
print(c.norm(1,dim=0)) # c_shape : [2,2,2] # tensor([[2., 2.],[2., 2.]]) shape==>[2,2]
# 对第0个维度上的元素进行二范数
print(c.norm(2,dim=0)) # c_shape : [2,2,2] # tensor([[2., 2.],[2., 2.]]) shape==>[2,2]
2, mean,sum, min , max , prod : 均值,求和,最小值,最大值,累乘
注意:函数中()不加参数,表示对所有元素的统计操作。
注意 argmax /argmin 对所有元素操作,会先把tensor打平。
在维度的统计的例子:
3, dim ,和keepdim在统计中的作用:
Keepdim和统计之前的tensor保持相同的dim
a = torch.rand(4,10)
print(a)
# torch.return_types.max(values=tensor([0.9392, 0.8477, 0.8333, 0.7605]),
# indices=tensor([0, 0, 9, 7])) # shape==>[4]
print(a.max(dim=1))
print(a.argmax(dim=1)) # tensor([0, 0, 9, 7]) # shape==>[4]
print(a.max(dim=1,keepdim=True)) # shape==>[4 ,1]
print(a.argmax(dim=1,keepdim=True)) # shape==>[4 ,1] (和统计之前的tensor保持相同的dim)
4,top-k or k-th讲解:
Topk :例子 (属于是max 的扩展,找到前K个最大/最小的元素)
Kthvalue: 返回指定dim维度中第几小的元素(第几个元素,元素从小到大排。)
例子:
5,其他统计操作:>,>=,<,<=,!=,==:
注意:torch.eq(a.b)返回的是每一个元素是否相等
Torch.equal(a,b)返回的是整个tensor比较的结果。
6,Where 和 gather :根据条件选取源头,和查表的操作。
1,where 根据条件:
例子:
2,Gather操作 收集操作:
例子: