欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pytorch tensor的统计属性 (统计tensor中为0或1的数量)

程序员文章站 2022-07-13 10:17:40
...

tensor的统计属性

morm范数

查看范数

范数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参数

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:【4】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 kthvalue函数

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]))

compare比较运算

对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