详解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实现给qq邮箱发送邮件的方法
May 28 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
在Django框架中编写Contact表单的教程
Jul 17 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
Python信息抽取之乱码解决办法
Jun 29 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
python 指定源路径来解决import问题的操作
Mar 04 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 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
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php生成短网址示例
2014/05/05 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
javascript常见操作汇总
2014/09/03 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python动态监控日志内容的示例
2014/02/16 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
override和overload的区别
2016/03/09 面试题
教师自荐书
2013/10/08 职场文书
调任通知
2015/04/21 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
关于MySQL中的 like操作符详情
2021/11/17 MySQL
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers