pytorch-tensor属性统计(norm,max,min...)
statistics
▪ norm (范数)
▪ mean,sum (平均值,求和)
▪ prod (累乘)
▪ max, min, argmin, argmax
▪ kthvalue, topk(第k大)
norm(范式)
这里面有一范式和二范式。
一范式:
二范式:
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.sum(dim,keepdim=False)
torch.sum(a,dim)
对于这个dim,就是我们按照dim维度进行求和,
比如说:a.shape=[4,5]
torch.sum(a,dim=0),返回的shape=[5]
torch.sum(a,dim=1),返回的shape=[4]
再比如说:a.shape=[2,4,5]
torch.sum(a,dim=0),返回的shape=[4,5]
torch.sum(a,dim=1), 返回的shape=[2,5]
torch.sum(a,dim=2), 返回的shape=[2,4]
torch.sum(a,dim=[0,2]),返回的shape=[4]
然后这里面我们还有个参数keepdim=False,默认是False
如果是True的话就是保留原来的shape
对于a.shape=[2,4,5]时,
torch.sum(a,dim=0).shape=[1,4,5]
torch.sum(a,dim=[0,2]).shape=[1,4,1]
a.mean()
torch.mean(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
torch.equal(a,b)
只返回一个True或者False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2020-07-31 RP 计算 (rp)(xor+差分)