【PyTorch】PyTorch中张量(Tensor)统计操作

PyTorch深度学习总结

第五章 PyTorch中张量(Tensor)统计操作


文章目录


前言

上文介绍了PyTorch中张量(Tensor)的计算操作,本文将介绍张量的统计操作。


一、最值查找

函数 描述
torch.max() 找出张量中的最大值
torch.argmax() 输出最大值所在位置
torch.min() 找出张量中的最小值
torch.argmin() 输出最小值所在位置
torch.sort() 对一维张量或多维(每个维度单独)进行排序
torch.topk(A, k) 根据指定值k,计算出张量A取值为前k大的值,并显示所在位置
torch.kthvalue(A, k) 根据指定值k,计算出张量A取值为第k小的值,并显示所在位置

创建张量:

python 复制代码
# 引入库
import torch

# 创建张量A
A = torch.arange(2., 8.).reshape(2,3)
print(A)

输出结果为:tensor(\[2, 3, 4, 5, 6, 7])


测试函数:

python 复制代码
print(A.max())
print(A.argmax())
print(A.min())
print(A.argmin())

输出结果为(含注释):

tensor(7.)

tensor(5) # 0-5的最后一位

tensor(2.)

tensor(0) # 0-5的第一位


torch.sort()
创建随机张量B:

python 复制代码
# 创建随机张量B
B = torch.randperm(15).reshape(3, 5) # torch.randperm(n)可以生成有n个0-10之间整数组成的张量
print(B)

输出结果为:

tensor(

\[13, 9, 1, 2, 0,

4, 14, 12, 3, 7,

5, 6, 8, 11, 10])


对张量B进行排序:

python 复制代码
# 升序输出
print(B.sort())  # 分别输出排序后的值,以及该值在原索引中不同维度的位置(列数)

输出结果为:

torch.return_types.sort(

values=tensor(\[ 0, 1, 2, 9, 13,

3, 4, 7, 12, 14,

5, 6, 8, 10, 11]),

indices=tensor(\[4, 2, 3, 1, 0,

3, 0, 4, 2, 1,

0, 1, 2, 4, 3]))


python 复制代码
# 降序输出
print(B.sort(descending=True))

输出结果为:

torch.return_types.sort(

values=tensor(\[13, 9, 2, 1, 0,

14, 12, 7, 4, 3,

11, 10, 8, 6, 5]),

indices=tensor(\[0, 1, 3, 2, 4,

1, 2, 4, 0, 3,

3, 4, 2, 1, 0]))


测试函数torch.topk()

python 复制代码
# 选取每个维度最大和次大的值,及其位置
print(B.topk(2))

输出结果为:

torch.return_types.topk(

values=tensor(\[13, 9,

14, 12,

11, 10]),

indices=tensor(\[0, 1,

1, 2,

3, 4]))


python 复制代码
# 选取2-dim维度前2大的值及其位置
print(B)
print(B.topk(2, dim=0))  # 每列最大的两个值

输出结果为(含注释):

tensor(\[13, 9, 1, 2, 0,

4, 14, 12, 3, 7,

5, 6, 8, 11, 10])

torch.return_types.topk(

values=tensor(\[13, 14, 12, 11, 10,

5, 9, 8, 3, 7]),

indices=tensor(\[0, 1, 1, 2, 2,

2, 0, 2, 1, 1])) # indices表示对应元素的行数


python 复制代码
# 选取2-dim最大和次大的值,及其位置
print(B.topk(2, dim=1))  # 与默认情况相同默认情况

输出结果为:

torch.return_types.topk(

values=tensor(\[13, 9,

14, 12,

11, 10]),

indices=tensor(\[0, 1,

1, 2,

3, 4]))


测试函数torch.kthvalue()

python 复制代码
# 选取每个维度第2小的值及其位置
print(B)
print(B.kthvalue(2))

输出结果为:

tensor(\[13, 9, 1, 2, 0,

4, 14, 12, 3, 7,

5, 6, 8, 11, 10])

torch.return_types.kthvalue(

values=tensor(1, 4, 6),

indices=tensor(2, 0, 1))


二、特殊值查询

函数 描述
torch.mean(A, dim=0) 根据指定维度计算均值
torch.sum(A, dim=0) 根据指定维度求和
torch.cumsum(A, dim=0) 根据指定维度计算累加和
torch.median(A, dim=0) 根据指定维度计算中位数
torch.cumprod(A, dim=0) 根据指定维度计算乘积
torch.std(A, dim=0) 根据指定维度计算标准差

测试函数(维度0):

python 复制代码
print(A)
print(A.mean(dim=0))
print(A.sum(dim=0))
print(A.cumsum(dim=0))
print(A.median(dim=0))
print(A.cumprod(dim=0))
print(A.std(dim=0))

输出结果为(含注释):

tensor(\[2., 3., 4.,

5., 6., 7.]) # 张量A

tensor(3.5000, 4.5000, 5.5000) # 每列均值

tensor( 7., 9., 11.) # 每列求和

tensor(\[ 2., 3., 4.,

7., 9., 11.]) # 每列累加求和

torch.return_types.median(

values=tensor(2., 3., 4.),

indices=tensor(0, 0, 0)) # 每列中位数及索引

tensor(\[ 2., 3., 4.,

10., 18., 28.]) # 每列累乘

tensor(2.1213, 2.1213, 2.1213) # 每列标准差


python 复制代码
print(A)
print(A.mean(dim=1))
print(A.sum(dim=1))
print(A.cumsum(dim=1))
print(A.median(dim=1))
print(A.cumprod(dim=1))
print(A.std(dim=1))

输出结果为(含注释):

tensor(\[2., 3., 4.,

5., 6., 7.]) # 张量A

tensor(3., 6.) # 每行均值

tensor( 9., 18.) # 每行求和

tensor(\[ 2., 5., 9.,

5., 11., 18.]) # 按行逐个累加

torch.return_types.median(

values=tensor(3., 6.),

indices=tensor(1, 1)) # 每行中位数

tensor(\[ 2., 6., 24.,

5., 30., 210.]) # 按行逐个累乘

tensor(1., 1.) # 每行标准差

相关推荐
杨江9 分钟前
codex开始使用
人工智能
财经资讯数据_灵砚智能10 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月6日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
落羽的落羽13 分钟前
【项目】JsonRpc框架——开发实现1(细节功能、字段定义、抽象层、具象层)
linux·服务器·网络·c++·人工智能·算法·机器学习
Harvy_没救了16 分钟前
【github爆款】Headroom:AI代理的智能上下文压缩层 —— 深度解析与洞察
人工智能·github
圣殿骑士-Khtangc18 分钟前
GPT-5.5 全面上线:大模型进入“价值验证“之年,幻觉率断崖式下降52.5%
人工智能
Land032921 分钟前
Python + RPA 双引擎实战:从手写脚本到可交付自动化应用的完整链路
python·自动化·rpa
weixin_4684668529 分钟前
深度学习图像数据增强新手实战指南
图像处理·人工智能·深度学习·ai·数据增强·机器视觉
Swift社区30 分钟前
鸿蒙 App 集成 AI 助手:架构设计 + 实战代码
人工智能·华为·harmonyos
复利人生 复利日知录 赋能循环33 分钟前
丘孔20260606复利的认知提升
人工智能
力学与人工智能38 分钟前
AIAAJ | 西工大常宝辉、李楠等:基于径向基函数神经网络的激波串数据驱动控制方法研究
人工智能·深度学习·神经网络·数据驱动·径向基函数·激波·控制方法