详解PyTorch中Tensor的高阶操作


Posted in Python onAugust 18, 2019

条件选取:torch.where(condition, x, y) → Tensor

返回从 x 或 y 中选择元素的张量,取决于 condition

操作定义:

详解PyTorch中Tensor的高阶操作

举个例子:

>>> import torch
>>> c = randn(2, 3)
>>> c
tensor([[ 0.0309, -1.5993, 0.1986],
    [-0.0699, -2.7813, -1.1828]])
>>> a = torch.ones(2, 3)
>>> a
tensor([[1., 1., 1.],
    [1., 1., 1.]])
>>> b = torch.zeros(2, 3)
>>> b
tensor([[0., 0., 0.],
    [0., 0., 0.]])
>>> torch.where(c > 0, a, b)
tensor([[1., 0., 1.],
    [0., 0., 0.]])

把张量中的每个数据都代入条件中,如果其大于 0 就得出 a,其它情况就得出 b,同样是把 a 和 b 的相同位置的数据导出。

查表搜集:torch.gather(input, dim, index, out=None) → Tensor

沿给定轴 dim,将输入索引张量 index 指定位置的值进行聚合

对一个3维张量,输出可以定义为:

  • out[i][j][k] = tensor[index[i][j][k]][j][k] # dim=0
  • out[i][j][k] = tensor[i][index[i][j][k]][k] # dim=1
  • out[i][j][k] = tensor[i][j][index[i][j][k]] # dim=3

举个例子:

>>> a = torch.randn(4, 10)
>>> b = a.topk(3, dim = 1)
>>> b
(tensor([[ 1.0134, 0.8785, -0.0373],
    [ 1.4378, 1.4022, 1.0115],
    [ 0.8985, 0.6795, 0.6439],
    [ 1.2758, 1.0294, 1.0075]]), tensor([[5, 7, 6],
    [2, 5, 8],
    [5, 9, 2],
    [7, 9, 6]]))
>>> index = b[1]
>>> index
tensor([[5, 7, 6],
    [2, 5, 8],
    [5, 9, 2],
    [7, 9, 6]])
>>> label = torch.arange(10) + 100
>>> label
tensor([100, 101, 102, 103, 104, 105, 106, 107, 108, 109])
>>> torch.gather(label.expand(4, 10), dim=1, index=index.long()) # 进行聚合操作
tensor([[105, 107, 106],
    [102, 105, 108],
    [105, 109, 102],
    [107, 109, 106]])

把 label 扩展为二维数据后,以 index 中的每个数据为索引,取出在 label 中索引位置的数据,再以 index 的的位置摆放。

比如,最后得出的结果中,第一行的 105 就是 label.expand(4, 10) 中第一行中索引为 5 的数据,提取出来后放在 5 所在的位置。

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
python requests爬取高德地图数据的实例
Nov 10 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
Jun 04 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
使用python动态生成波形曲线的实现
Dec 04 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
Python print不能立即打印的解决方式
Feb 19 Python
Python with语句用法原理详解
Jul 03 Python
python进度条显示之tqmd模块
Aug 22 Python
Python基于execjs运行js过程解析
Nov 27 Python
浅析PyTorch中nn.Linear的使用
Aug 18 #Python
Pytorch实现GoogLeNet的方法
Aug 18 #Python
PyTorch之图像和Tensor填充的实例
Aug 18 #Python
Pytorch Tensor的索引与切片例子
Aug 18 #Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 #Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 #Python
pytorch中的embedding词向量的使用方法
Aug 18 #Python
You might like
php5.3 注意事项说明
2013/07/01 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
js表数据排序 sort table data
2009/02/18 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
react中使用swiper的具体方法
2018/05/15 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
python正则表达式re模块详细介绍
2014/05/29 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
python 实现return返回多个值
2019/11/19 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
军神教学反思
2014/02/04 职场文书
开业典礼主持词
2014/03/21 职场文书
计划生育证明书写要求
2014/09/17 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
2015年个人思想总结
2015/03/09 职场文书
指导老师鉴定意见
2015/06/05 职场文书
朋友离别感言
2015/08/04 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server