详解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使用BeautifulSoup分析网页信息的方法
Apr 04 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
TensorFlow实现卷积神经网络
May 24 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
Python数据类型之Tuple元组实例详解
May 08 Python
pytorch 共享参数的示例
Aug 17 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
python中如何打包用户自定义模块
Sep 23 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
色色整理的PHP面试题集锦
2012/03/08 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
Tornado 多进程实现分析详解
2018/01/12 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
垃圾回收的优点和原理
2014/05/16 面试题
商务考察邀请函范文
2014/01/21 职场文书
表决心的诗句大全
2014/03/11 职场文书
十八大标语口号
2014/10/09 职场文书
营业员岗位职责
2015/02/11 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
Nginx报404错误的详细解决方法
2022/07/23 Servers