详解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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
Python 列表理解及使用方法
Oct 27 Python
python多线程http压力测试脚本
Jun 25 Python
Python高级property属性用法实例分析
Nov 19 Python
python连接mongodb集群方法详解
Feb 13 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python操作Jira库常用方法解析
Apr 10 Python
利用Python过滤相似文本的简单方法示例
Feb 03 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 随机数的深入理解
2013/06/05 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
php源码的使用方法讲解
2019/09/26 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python读取文本中的坐标方法
2018/10/14 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Python Web版语音合成实例详解
2019/07/16 Python
如何运行带参数的python脚本
2019/11/15 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
python脚本后台执行方式
2019/12/21 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
python怎么判断素数
2020/07/01 Python
python如何使用代码运行助手
2020/07/03 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
英文简历中的自我评价
2013/10/06 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
环保项目建议书
2014/08/26 职场文书
大学班长竞选稿
2015/11/20 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python