关于属性统计

 norm范数

torch.norm是对输入的Tensor求范数,指定在哪个维度,就会消掉对应维度

        0范数向量中非零元素的个数

        1范数绝对值之和

        2范数:相当于求摸,绝对值之和再开方

        无穷范数:取向量的最大值 

import torch
a = torch.ones((2, 4))      # 建立tensor
a1 =a.norm(1)      # 指定求1范数
a2 =a.norm()      # 默认求2范数
#不指定维度的话,会默认打平为一维
print(a)
print(a1)
print(a2)

b = a.view(2,2,2)
print(a.norm(1,dim=1))    #指定在第一维上求1范数
print(a.norm(2,dim=1))    
print(b)
print(b.norm(1,dim=0))    #指定在0维上求范数
print(b.norm(2,dim=0))
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.]])
tensor(8.)        #和
tensor(2.8284)
tensor([4., 4.])
tensor([2., 2.])        #开方
tensor([[[1., 1.],        # b
         [1., 1.]],

        [[1., 1.],
         [1., 1.]]])
tensor([[2., 2.],
        [2., 2.]])
tensor([[1.4142, 1.4142],        #开方
        [1.4142, 1.4142]])

mean、prod、sum

        mean 是对 tensor求平均值、

        prod 是对 tensor求连乘

        sum对 tensor求和

若不指明维度,会将tensor打平运

a = torch.arange(8).view(2,4).float()
print(a)
print(a.mean()),print(a.prod())
print(a.sum())

print(a.mean(dim=1)),print(a.prod(dim=1))
print(a.sum(dim=1))
tensor([[0., 1., 2., 3.],
        [4., 5., 6., 7.]])
tensor(3.5000)
tensor(0.)
tensor(28.)

tensor([1.5000, 5.5000])    #维度1
tensor([  0., 840.])
tensor([ 6., 22.])

max、min、argmin、argmax

max,min 会返回最大小值和其索引,argmax和argmin只返回索引

不指明dim打平,

若加上keepdim会保留维度

a = torch.arange(8).view(2,4).float()
print(a)
print(a.max()),print(a.min())
print(a.max(dim=1)),print(a.min(dim=1,keepdim=True))    #对最小值保留维度

print(a.argmax()),print(a.argmin())
print(a.argmax(dim=1)),print(a.argmin(dim=1,keepdim=True))    #保留最小值索引维度
tensor([[0., 1., 2., 3.],
        [4., 5., 6., 7.]])
tensor(7.)    #最大值
tensor(0.)    #最小值
torch.return_types.max(
values=tensor([3., 7.]),    
indices=tensor([3, 3]))    #最大值索引
torch.return_types.min(
values=tensor([[0.],
        [4.]]),
indices=tensor([[0],        #最小值索引,维度不变
        [0]]))

tensor(7)
tensor(0)
tensor([3, 3])
tensor([[0],
        [0]])

topk、kthvalue

TOPK可以指定求前多少个最大最小值,默认求最大,largest = FALSE 求最小

        dim = 1表示按行取最大最小

        返回值和索引

kthvalue指定求第几小,dim指定在哪个维度,

a = torch.randn(4,10)
m = a.topk(3,dim=1)    #求维度1上前3大的数
print(m)

n = a.topk(3,dim=1,largest=False)    #前三小的
print(n)

o = a.kthvalue(8,dim=1)    #第8小,第三大
print(o)

p = a.kthvalue(3,dim=1,keepdim=True)    #第三小,第8大
print(p)
torch.return_types.topk(
values=tensor([[ 0.4976,  0.1273, -0.0051],    #前三大
        [ 2.5237,  1.6637,  1.0279],
        [ 2.4486,  0.9668,  0.9551],
        [ 1.9150,  1.2690,  1.1584]]),
indices=tensor([[2, 5, 6],                    #索引位置
        [1, 4, 9],
        [1, 0, 5],
        [0, 1, 3]]))
torch.return_types.topk(
values=tensor([[-1.4507, -1.0305, -0.9570],    #前三小
        [-2.1197, -2.0233, -1.8962],
        [-1.6928, -1.0323, -0.3984],
        [-1.5127, -1.3640, -0.5574]]),
indices=tensor([[9, 0, 4],
        [6, 8, 0],
        [8, 3, 6],
        [7, 4, 2]]))
torch.return_types.kthvalue(
values=tensor([-0.0051,  1.0279,  0.9551,  1.1584]),    #第八小
indices=tensor([6, 9, 5, 3]))                            #索引
torch.return_types.kthvalue(
values=tensor([[-0.9570],                #第三小
        [-1.8962],
        [-0.3984],
        [-0.5574]]),
indices=tensor([[4],                #保留维度
        [0],
        [6],
        [2]]))

比较

将 tensor 用运算符>,<,>=,<=,!=,==,等与其他数比较大小,会返回对应位置的TRUE,或者FALSE

torch.eq( a,b)会比较这两个tensor,相等位置TRUE,否则FALSE

torch.equal(a,b)返回一个值,相等TRUE,否则FALSE

a = torch.randn(4,10)
print(a>0)
m = torch.ones(2,3)
n = torch.randn(2,3)

k = torch.eq(m,n)
k1 = torch.eq(m,m)
print(k)
print(k1)

l = torch.equal(m,m)
print(l)
tensor([[False,  True, False,  True, False, False, False, False, False,  True],
        [ True,  True,  True,  True,  True,  True,  True,  True, False, False],
        [False,  True, False,  True,  True,  True, False,  True, False,  True],
        [ True,  True, False, False,  True, False, False, False,  True, False]])

tensor([[False, False, False],
        [False, False, False]])

tensor([[True, True, True],
        [True, True, True]])

True

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onlywishes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值