深度实践OpenStack:基于Python的OpenStack组件开发—3.4.4 统计函数
3.4.4 统计函数
本节介绍一些统计张量中所有元素的性质的函数。
表3-2列出了torch.Tensor类的一些成员函数,它们可以根据张量中的所有元素计算统计量。除了kthvalue() 函数以外,对于其他所有成员,在调用时如果不提供任何参数,就会忽略张量的具体形状,而把所有元素看作一整个大列表,计算统计量,得到1个零维张量。成员函数kthvalue() 略有不同。kthvalue() 计算第大元素,需要传入的值,而且该函数返回一个长度为2的元组,元组里分别是元素的值和元素对应的指标(即原张量的第几个元素)。代码清单3-18给出了使用统计函数的例子。
表3-2 张量的部分统计函数
torch.Tensor类成员
统计量
无参数时的行为
有参数dim时的返回值
mean()
平均值
仅返回值
仅返回值
sum()
总和
仅返回值
仅返回值
std()
标准差
仅返回值
仅返回值
var()
方差
仅返回值
仅返回值
prod()
积
仅返回值
仅返回值
max()
最大值
仅返回值
可用argmax() 得到取得最大值的指标
同时返回值和指标
min()
最小值
仅返回值
可用argmin() 得到取得最小值的指标
同时返回值和指标
median()
中位数
仅返回值
同时返回值和指标
kthvalue()
第大值
同时返回值和指标
同时返回值和指标
norm()
范数
仅返回值
仅返回值
代码清单3-18 利用统计函数得到统计结果
t = torch.arange(5)
print ('各元素方差 = {}'.format(t.var())) # 2.5
print ('各元素积 = {}'.format(t.prod())) # 0.
print ('最大值 = {}'.format(t.max())) # 4.
print ('中位数 = {}'.format(t.median())) # 2.
print ('第2大值 = {}'.format(t.kthvalue(2))) # 1. 和 1.
在调用表3-2中的成员函数时,还可以指定关键字参数dim,以对某个维度进行统计。在这种情况下,函数max()、min()、median() 和kthvalue() 都返回长度为2的元组,元组中的两个条目分别提供值和指标。代码清单3-19给出了对张量的某个维度进行统计的例子。
代码清单3-19 对某个维度进行统计
t = torch.arange(12).reshape(2, 2, 3)
print ('各元素方差 = {}'.format(t.var(dim=1)))
print ('各元素积 = {}'.format(t.prod(dim=1)))
print ('最大值 = {}'.format(t.max(dim=1)))
print ('中位数 = {}'.format(t.median(dim=1)))
print ('第2大值 = {}'.format(t.kthvalue(2, dim=1)))
成员函数norm() 可以求张量的范数。这个函数有一个数值类型的参数。对于元素为
的张量,参数的值为,则范数为。的默认值为2。
另外,torch.Tensor还有两个成员方法cumsum() 和cumprod(),分别可以对指定的维度做累加和累乘。对于数据,累加后的结果为
,累乘后的结果是。
- 点赞
- 收藏
- 关注作者
评论(0)