statistics
▪ norm (范数)
▪ mean,sum (平均值,求和)
▪ prod (累乘)
▪ max, min, argmin, argmax
▪ kthvalue, topk(第k大)
norm(范式)
这里面有一范式和二范式。
一范式:
二范式:
\[||x||_1=\sqrt{\sum_k{x_k^2}} \]a.norm(k,dim)
这个dim,可以不填,不填就是整个tensor的范式
a=torch.full([8],1.)
b=a.view(2,4)
c=a.view(2,2,2)
b
# tensor([[1., 1., 1., 1.],
# [1., 1., 1., 1.]])
c
# tensor([[[1., 1.],
# [1., 1.]],
#
# [[1., 1.],
# [1., 1.]]])
a.norm(1),b.norm(1),c.norm(1)
# (tensor(8.), tensor(8.), tensor(8.))
a.norm(2),b.norm(2),c.norm(2)
# (tensor(2.8284), tensor(2.8284), tensor(2.8284))
对于a.norm(2,dim)
如果加了维度的话,就是该维度变没有了
比如[2,3,4]
dim=0,就是两个[3,4]对应位置求范式操作
dim=1,就是三个[2,4]对应位置求范式操作
dim=2,就是四个[2,3]对应位置求范式操作
b.norm(1,dim=1)
# tensor([4., 4.])
b.norm(2,dim=1)
# tensor([2., 2.])
b.norm(1,dim=0)
# tensor([2., 2., 2., 2.])
c.norm(1,dim=0)
# tensor([[2., 2.],
# [2., 2.]])
c.norm(2,dim=0)
# tensor([[1.4142, 1.4142],
# [1.4142, 1.4142]])
t=torch.rand(2,3,4)
t.norm(1,dim=0).shape
# torch.Size([3, 4])
t.norm(1,dim=1).shape
# torch.Size([2, 4])
t.norm(1,dim=2).shape
# torch.Size([2, 3])
mean,sum,min,max,prod
a.mean()
torch.mean(a,dim)
均值
a.sum()
torch.sum(a,dim)
求和
a.min()
torch.min(a,dim)
求最小值
a.max()
torch.max(a,dim)
a=torch.arange(8).view(2,4).float()
a
# tensor([[0., 1., 2., 3.],
# [4., 5., 6., 7.]])
a.min(),a.max(),a.mean(),a.prod()
# (tensor(0.), tensor(7.), tensor(3.5000), tensor(0.))
a.sum()
# tensor(28.)
argmax(),argmin()
a.argmax(dim)或者torch.argmax(a,dim)
如果不加dim的话,默认求整个tensor的最大值所在的位置,但是这个位置是打平之后的位置
加上dim之后就是在该维度上,返回该维度上每一个位置的最大值所在位置
a
# tensor([[0., 1., 2., 3.],
# [4., 5., 6., 7.]])
a.argmax()
# tensor(7)
这个函数用处比较多的地方是在多分类预测的softmax之后,我们要得到每一个样本最大值所在位置的时候
a=torch.randn(4,10)
a
a.argmax(dim=1)
# tensor([7, 0, 9, 5])
# 这个相当于4个样本,10分类,然后返回的是每个样本的预测值所在位置
这个相当于4个样本,10分类,然后返回的是每个样本的预测值所在位置
Top-K or k-th
▪ .topk
- Largest
▪ kthvalue
a.topk(k,dim)
返回dim维度上前k大的值
假如a=[4,10],a.topk(3,dim=1),则返回的shape=[4,3],topk(3,dim=0),则返回的shape=[3,10]
这个函数默认前k大,如果想返回前k小的话,就是a.topk(k,dim,largest=False)
a.kthvalue(k,dim)
返回的第k大
compare
▪ >, >=, <, <=, !=, ==
▪ torch.eq(a, b)
▪ torch.equal(a, b)
如果和一个具体的数字向比较话,可以用
a>0,a>=0,a!=0,a==0
或者torch.gt(a,0)
如果说想比较两个tensor的数值是否相等的话,可以用
torch.eq(a,b)
返回与a,b相同shape的一个tensor,同一位置中的数值相等的话是True,不相等的话是False
标签:...,范式,tensor,dim,sum,torch,min,norm From: https://www.cnblogs.com/lipu123/p/17593853.htmltorch.equal(a,b)
只返回一个True或者False