详解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提取html文件中的特定数据的实现代码
Mar 24 Python
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
Python机器学习之决策树算法
Dec 22 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
解决python 文本过滤和清理问题
Aug 28 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
python学生管理系统的实现
Apr 05 Python
django rest framework 自定义返回方式
Jul 12 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
jupyter notebook快速入门及使用详解
Nov 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脚本的10个技巧(7)
2006/10/09 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
Javascript 入门基础学习
2010/03/10 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
react redux入门示例
2018/04/19 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python变量赋值的秘密分享
2018/04/03 Python
python内存管理机制原理详解
2019/08/12 Python
使用python制作一个解压缩软件
2019/11/13 Python
Python属性和内建属性实例解析
2020/01/14 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
实习自荐信
2013/10/13 职场文书
高二英语教学反思
2014/01/19 职场文书
毕业典礼邀请函
2015/01/31 职场文书