详解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用fork来创建子进程注意事项
Jul 03 Python
Python中列表、字典、元组、集合数据结构整理
Nov 20 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python3生成手写体数字方法
Jan 30 Python
python计算两个数的百分比方法
Jun 29 Python
django缓存配置的几种方法详解
Jul 16 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
python实现函数极小值
Jul 10 Python
Python高级特性 切片 迭代解析
Aug 23 Python
Python Django 前后端分离 API的方法
Aug 28 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 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网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
详解python中eval函数的作用
2019/10/22 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
django 模版关闭转义方式
2020/05/14 Python
学习Python需要哪些工具
2020/09/04 Python
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
中专毕业生自我鉴定
2013/11/21 职场文书
生日寄语大全
2014/04/08 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
新闻稿格式范文
2015/07/18 职场文书
安全生产会议制度
2015/08/06 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android