详解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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
使用pip安装python库的多种方式
Jul 31 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
对python中的装包与解包实例详解
Aug 24 Python
Python如何优雅获取本机IP方法
Nov 10 Python
用python中的matplotlib绘制方程图像代码
Nov 21 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
python打开音乐文件的实例方法
Jul 21 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设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
php cli配置文件问题分析
2015/10/15 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
大学信息公开实施方案
2014/03/09 职场文书
五四青年节的活动方案
2014/08/20 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
检讨书范文1000字
2015/01/28 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
2015年教研员工作总结
2015/05/26 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript