pytorch基础知识九【统计属性】

1. 范数

在这里插入图片描述

2. p范数

在这里插入图片描述

3. 常用统计属性

【1】mean、sum、min、max、prod;argmin、argmax

(1) prod()  表示连乘
(2) argmax()、argmin() 不指定维度,会将张量(tensor)打平乘一个一维的tensor,返回索引;
	指定维度后,根据维度返回每一行或每一列中maxmin元素的索引。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【2】dim、keepdim

keepdim参数在一列tensor的形式返回所求目标统计值和对应的索引

在这里插入图片描述
【3】topk 和 kth

1】topk
		(1) b的size是p* q* j
		(2) b.topk(n,dim=0) 返回的东西包括两个nqj的tensor,
			第一个tensor是value 第二个tensor是indice 其他思路和max差不多
		(3) b.topk(n,dim=1) 返回的东西包括两个pnj的tensor,
			第一个tensor是value 第二个tensor是indice 其他思路和max差不多
		(4) dim不写 默认为最大的 比如本例中就是2
		(5) largest=False则返回的是最小的n个
	b = torch.rand(2,3,10) #假设2个batch,每个batch3张照片,10表示每张照片依次是0~9的概率
	print(b)
	tensor([[[0.5304, 0.1505, 0.5322, 0.0247, 0.1890, 0.8630, 0.6212, 0.4308,
          0.3447, 0.9590],
         [0.7632, 0.1420, 0.7258, 0.8698, 0.6531, 0.2155, 0.8730, 0.3963,
          0.1711, 0.4374],
         [0.7572, 0.4117, 0.2699, 0.4153, 0.9025, 0.7338, 0.4403, 0.6043,
          0.6109, 0.9631]],

        [[0.5738, 0.9288, 0.2986, 0.8859, 0.2687, 0.9388, 0.4515, 0.9561,
          0.9277, 0.6534],
         [0.4825, 0.9142, 0.4260, 0.4814, 0.8739, 0.9296, 0.8225, 0.5581,
          0.8214, 0.2455],
         [0.5460, 0.6100, 0.5846, 0.7510, 0.5964, 0.4243, 0.8347, 0.7734,
          0.5279, 0.5943]]])

	b.topk(1,dim=2)
	# 0.9590表示第一个batch的第一张照片的10个概率值中,最大的是0.9590 并
	#且我们可以看到它对应的indice是9 表示这张照片是“9”的概率为0.9590
	
	# 0.9296表示第2个batch的第2张照片的10个概率值中,最大的是0.9296 并且
	# 我们可以看到它对应的indice是5 表示这张照片是“5”的概率为0.9590

	torch.return_types.topk(
	values=tensor([[[0.9590],
	         [0.8730],
	         [0.9631]],
	
	        [[0.9561],
	         [0.9296],
	         [0.8347]]]),
	indices=tensor([[[9],
	         [6],
	         [9]],
	
	        [[7],
	         [5],
	         [6]]]))

	b.topk(1)
	torch.return_types.topk(
	values=tensor([[[0.9590],
	         [0.8730],
	         [0.9631]],
	
	        [[0.9561],
	         [0.9296],
	         [0.8347]]]),
	indices=tensor([[[9],
	         [6],
	         [9]],
	
	        [[7],
	         [5],
	         [6]]]))

2】kthvalue
		kthvalue的分析思路和max带dim的分析思路一样,只是把最大换成第几大
		当kthvalue的dim不写的时候,默认为最大
	print(b.shape,'\n')
	print(b)
	torch.Size([2, 3, 10]) 

	tensor([[[0.5304, 0.1505, 0.5322, 0.0247, 0.1890, 0.8630, 0.6212, 0.4308,
	          0.3447, 0.9590],
	         [0.7632, 0.1420, 0.7258, 0.8698, 0.6531, 0.2155, 0.8730, 0.3963,
	          0.1711, 0.4374],
	         [0.7572, 0.4117, 0.2699, 0.4153, 0.9025, 0.7338, 0.4403, 0.6043,
	          0.6109, 0.9631]],
	
	        [[0.5738, 0.9288, 0.2986, 0.8859, 0.2687, 0.9388, 0.4515, 0.9561,
	          0.9277, 0.6534],
	         [0.4825, 0.9142, 0.4260, 0.4814, 0.8739, 0.9296, 0.8225, 0.5581,
	          0.8214, 0.2455],
	         [0.5460, 0.6100, 0.5846, 0.7510, 0.5964, 0.4243, 0.8347, 0.7734,
	          0.5279, 0.5943]]])

	print(b.kthvalue(2,dim=2)[0].shape,'\n')
	print(b.kthvalue(2,dim=2))
	
	torch.Size([2, 3]) 

	torch.return_types.kthvalue(
	values=tensor([[0.1505, 0.1711, 0.4117],
	        [0.2986, 0.4260, 0.5279]]),
	indices=tensor([[1, 8, 1],
	        [2, 2, 8]]))


在这里插入图片描述
【4】compare

在这里插入图片描述

4. 高级操作

where & gather

4.1 where

在这里插入图片描述
在这里插入图片描述

4.2 gather

官方文档

定义:
	torch.gather(input, dim, index, out=None) → Tensor

    Gathers values along an axis specified by dim.

    For a 3-D tensor the output is specified by:

    out[i][j][k] = input[index[i][j][k]][j][k]  # dim=0
    out[i][j][k] = input[i][index[i][j][k]][k]  # dim=1
    out[i][j][k] = input[i][j][index[i][j][k]]  # dim=2

Parameters: 

        input (Tensor) – The source tensor
        dim (int) – The axis along which to index
        index (LongTensor) – The indices of elements to gather
        out (Tensor, optional) – Destination tensor

Example:

    >>> t = torch.Tensor([[1,2],[3,4]])
    >>> torch.gather(t, 1, torch.LongTensor([[0,0],[1,0]]))
     1  1
     4  3
    [torch.FloatTensor of size 2x2]

a=t.arange(0,16).view(4,4)
print(a)

index_1=t.LongTensor([[3,2,1,0]])
b=a.gather(0,index_1)
print(b)

index_2=t.LongTensor([[0,1,2,3]]).t()#tensor转置操作:(a)T=a.t()
c=a.gather(1,index_2)
print(c)


执行结果:
	tensor([[ 0,  1,  2,  3],
	        [ 4,  5,  6,  7],
	        [ 8,  9, 10, 11],
	        [12, 13, 14, 15]])
        
	tensor([[12,  9,  6,  3]])
	
	tensor([[ 0],
	        [ 5],
	        [10],
	        [15]])


在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值