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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
python格式化字符串实例总结
Sep 28 Python
Python解析xml中dom元素的方法
Mar 12 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
如何在Django中设置定时任务的方法示例
Jan 18 Python
python3利用Socket实现通信的方法示例
May 06 Python
python turtle库画一个方格和圆实例
Jun 27 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
Python绘制组合图的示例
Sep 18 Python
什么是Python装饰器?如何定义和使用?
Apr 11 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获取当前所在目录位置的方法
2014/11/26 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
简单了解Python生成器是什么
2019/07/02 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
今日说法观后感
2015/06/08 职场文书
欠条格式范本
2015/07/03 职场文书
防溺水主题班会教案
2015/08/12 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
Redis读写分离搭建的完整步骤
2021/09/14 Redis
Spring Boot 实现 WebSocket
2022/04/30 Java/Android