PyTorch中Tensor的数据统计示例


Posted in Python onFebruary 17, 2020

张量范数:torch.norm(input, p=2) → float

返回输入张量 input 的 p 范数

举个例子:

>>> import torch
>>> 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)	# 求 1- 范数
(tensor(8.), tensor(8.), tensor(8.))
>>> a.norm(2), b.norm(2), c.norm(2)	# 求 2- 范数
(tensor(2.8284), tensor(2.8284), tensor(2.8284))
>>> a.norm(3), b.norm(3), c.norm(3)# 求 ∞- 范数
(tensor(2.), tensor(2.), tensor(2.))
>>> b
tensor([[1., 1., 1., 1.],
    [1., 1., 1., 1.]])
>>> b.norm(1, 1) # 在 1 维度上求 1- 范数
tensor([4., 4.])
>>> b.norm(2, 1) # 在 1 维度上求 2- 范数
b.norm(1, 2)
>>> c
tensor([[[1., 1.],
     [1., 1.]],

    [[1., 1.],
     [1., 1.]]])
>>> c.norm(1, 0) # 在 0 维度上求 1- 范数
tensor([[2., 2.],
    [2., 2.]])
>>> c.norm(2, 0) # 在 0 维度上求 2- 范数
tensor([[1.4142, 1.4142],
    [1.4142, 1.4142]])

只有一个参数时,表示对整个张量求范数,参数表示范数的幂指数值。

有两个参数时,表示在张量某一维度对尺寸中每一部分求范数,第一个参数是范数的幂指数值,第二个参数是选择的维度。

张量统计

最基础的统计方法,比如张量中的最小值、最大值、均值、累加、累积。

举个例子:

>>> a = torch.arange(8).view(2, 4).float()
>>> a
tensor([[0., 1., 2., 3.],
    [4., 5., 6., 7.]])
>>> a.min(), a.max(), a.mean(), a.sum(), a.prod() # 分别求最小值、最大值、均值、累加、累积
(tensor(0.), tensor(7.), tensor(3.5000), tensor(28.), tensor(0.))
>>> a.argmin(), a.argmax() # 分别是把张量打平后最小值、最大值的索引
(tensor(0), tensor(7))
>>> a.argmin(1), a.argmax(1) # 不打平求 1 维度中每一部分最小值、最大值的索引
(tensor([0, 0]), tensor([3, 3]))

dim和keepdim

>>> a = torch.randn(5, 10)
>>> a
tensor([[-0.6346, -0.9074, 0.1525, 0.1901, -0.5391, -0.2437, 1.0150, -0.0427,
     -1.5336, 0.8542],
    [-0.1879, 1.9947, -0.3524, -1.2559, -0.8129, -0.3018, 0.5654, 0.8428,
     -0.3517, -0.7787],
    [ 0.0686, 0.6166, 0.2632, -0.0947, -0.5592, -1.4041, 1.5565, 1.5616,
     -1.3076, -0.1137],
    [ 0.5205, -1.5716, -1.1277, 0.8096, -0.2123, -0.0974, 0.7698, 1.1373,
     0.5165, 0.5256],
    [-0.4162, 0.3170, 0.2368, 1.1695, -0.1960, -0.3285, 0.2420, 1.6468,
     0.2646, 0.4573]])
>>> a.max(dim=1)
(tensor([1.0150, 1.9947, 1.5616, 1.1373, 1.6468]), tensor([6, 1, 7, 7, 7]))
>>> a.argmax(dim=1)
tensor([6, 1, 7, 7, 7])

max 添加 dim 后不仅显示了 1 维度中每一部分的最大值,还显示了其索引

>>> a.max(dim=1, keepdim=True)
(tensor([[1.0150],
    [1.9947],
    [1.5616],
    [1.1373],
    [1.6468]]), tensor([[6],
    [1],
    [7],
    [7],
    [7]]))
>>> a.argmax(dim=1, keepdim=True)
tensor([[6],
    [1],
    [7],
    [7],
    [7]])

保持维度一致。添加 keepdim 后,得出的结果维度不改变,原来是二维的数据,得出的结果还是二维。不添加得出的结果就是一维的。

比较操作

torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)

沿给定 dim 维度返回输入张量 input 中 k 个最大值。 如果不指定 dim,则默认为 input 的最后一维。 如果为 largest 为 False ,则返回最小的 k 个值。

返回一个元组 (values,indices),其中 indices 是原始输入张量 input 中测元素下标。 如果设定布尔值 sorted 为_True_,将会确保返回的 k 个值被排序。

torch.kthvalue(input, k, dim=None, out=None) -> (Tensor, LongTensor) 取输入张量 input 指定维上第 k 个最小值。如果不指定 dim,则默认为 input 的最后一维。

返回一个元组 (values,indices),其中indices是原始输入张量input中沿dim维的第 k 个最小值下标。

举个例子:

>>> b = torch.randn(5, 10)
>>> b
tensor([[ 0.1863, 0.0160, -1.0657, -1.8984, 2.3274, 0.6534, 1.8126, 1.8666,
     0.4830, -0.7800],
    [-0.9359, -1.0655, 0.8321, 1.6265, 0.6812, -0.2870, 0.6987, 0.6067,
     -0.1318, 0.7819],
    [-3.1129, 0.9571, -0.1319, -1.0016, 0.7267, 0.1060, -0.2926, 0.3492,
     1.0026, 0.2924],
    [-0.7101, -0.8327, 0.5463, 0.3805, -0.8720, -1.6723, 0.0365, 1.5540,
     0.1940, 1.4294],
    [ 0.4174, -0.9414, -0.0351, -1.6142, -0.7802, -2.3916, -2.4822, 0.7233,
     -0.7037, 0.2725]])
>>> b.topk(3, dim=1)
(tensor([[2.3274, 1.8666, 1.8126],
    [1.6265, 0.8321, 0.7819],
    [1.0026, 0.9571, 0.7267],
    [1.5540, 1.4294, 0.5463],
    [0.7233, 0.4174, 0.2725]]), tensor([[4, 7, 6],
    [3, 2, 9],
    [8, 1, 4],
    [7, 9, 2],
    [7, 0, 9]]))
>>> b.topk(3, dim=1, largest=False)
(tensor([[-1.8984, -1.0657, -0.7800],
    [-1.0655, -0.9359, -0.2870],
    [-3.1129, -1.0016, -0.2926],
    [-1.6723, -0.8720, -0.8327],
    [-2.4822, -2.3916, -1.6142]]), tensor([[3, 2, 9],
    [1, 0, 5],
    [0, 3, 6],
    [5, 4, 1],
    [6, 5, 3]]))
>>> a.kthvalue(8, dim=1)
(tensor([0.1034, 0.8940, 0.6155, 0.4210, 0.1955]), tensor([1, 2, 6, 4, 7]))

topk 添加 largest=False 就是返回最小,不添加就是返回最大。

kthvalue 返回以从大到小排列的指定位置的数。上面代码中即为返回第 8 小的数。

torch.eq(input, other, out=None) → Tensor

比较元素相等性。第二个参数可为一个数或与第一个参数同类型形状的张量。

torch.equal(tensor1, tensor2) → bool

如果两个张量有相同的形状和元素值,则返回 True ,否则 False。

举个例子:

>>> a = torch.ones(2, 3)
>>> b = torch.randn(2, 3)
>>> torch.eq(a, b)
tensor([[0, 0, 0],
    [0, 0, 0]], dtype=torch.uint8)
>>> torch.eq(a, a)
tensor([[1, 1, 1],
    [1, 1, 1]], dtype=torch.uint8)
>>> torch.equal(a, a)
True

eq 比较张量中的每个数据,equal 比较整个张量

以上这篇PyTorch中Tensor的数据统计示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
Python探索之创建二叉树
Oct 25 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
Django代码性能优化与Pycharm Profile使用详解
Aug 26 Python
Python中修改字符串的四种方法
Nov 02 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
python与字符编码问题
May 24 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
PyQt QMainWindow的使用示例
Mar 24 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 Python
pytorch实现Tensor变量之间的转换
Feb 17 #Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 #Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
Feb 17 #Python
python识别验证码图片实例详解
Feb 17 #Python
Python pyautogui模块实现鼠标键盘自动化方法详解
Feb 17 #Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 #Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 #Python
You might like
php 文章采集正则代码
2009/12/28 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python中的getopt函数使用详解
2015/07/28 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
python 生成器协程运算实例
2017/09/04 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
kali中python版本的切换方法
2019/07/11 Python
Pytorch释放显存占用方式
2020/01/13 Python
django从后台返回html代码的实例
2020/03/11 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
外科实习自我鉴定
2013/10/06 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
保护环境倡议书范文
2014/05/13 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
物业接待员岗位职责
2015/04/15 职场文书
论语读书笔记
2015/06/26 职场文书
运动会开幕式主持词
2015/07/01 职场文书
公司董事任命书
2015/09/21 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书