详解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字符串替换的2种方法
Nov 30 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
详解如何使用Python编写vim插件
Nov 28 Python
Python 查看文件的编码格式方法
Dec 21 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
python后端接收前端回传的文件方法
Jan 02 Python
Python设计模式之原型模式实例详解
Jan 18 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
python实现超市商品销售管理系统
Oct 25 Python
一文读懂Python 枚举
Aug 25 Python
Python SQLAlchemy库的使用方法
Oct 13 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
很好用的PHP数据库类
2009/05/27 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
js获取div高度的代码
2008/08/09 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python跳出双层for循环的解决方法
2019/06/24 Python
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
EJB的角色和三个对象
2015/12/31 面试题
见习期自我鉴定
2014/01/31 职场文书
大学生毕业鉴定
2014/01/31 职场文书
党风廉设责任书
2014/04/16 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
食品卫生管理制度
2015/08/06 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python
table不让td文字溢出操作方法
2022/12/24 HTML / CSS