pytorch 数据维度变换

1、view和reshape:

* 两者功能完全一样。只是pytorch 0.3版本默认是view,为了和Numpy一致,后来增加了reshape的api

* 注意:变换前后的数据大小必须一样

2、squeeze v.s. unsqueeze

1)unsqueeze,将维度展开。

如下图所示:

一维数据插入-1以后,将数据变成二维(1行2列,变为2行1列)

如果插入0,会将1行2列,变成1行1列(1列里面又是1行1列)

2)squeeze:删减维度

与unsqueeze作用刚好相反。

a.squeeze()默认是删减所有为1的维度数据,如下图所示:

3、expand v.s. repeat

1)expand:扩展维度到指定维度

2)repeat:

复制原维度多少倍。(不建议使用,因为复制数据会重新申请内存空间,比较占内存)

4、t:矩阵转置:

5、transpose v.s. permute

1)transpose:维度交换

torch.all、torch.eq  # 用于比较两个数据是否一致

2)permute:

调用一次或多次的transpose来达到交换

6、broadcast广播(自动扩展):

1)特点:

自动扩展维度,并且不用复制数据,节省空间

2)不能broadcast的情况:

给定A的维度[4 32 8],若给定B[4]。因为广播(默认)是从小维度开始,即此处的8所在维度。因为4属于8的一半维度,而另外的两个维度可以扩展为4 32,最终导致8所在维度缺少一半数据,所以此时不能扩张。(如果给定[1],可以8的每个数字加上1,或者给定[8],每个元素一一对应相加,否则不能扩张)

3)广播例子:

4)综上,可以广播的条件:

要么不给定维度,要么给定1,要么给定原数据相同的维度。

原文地址:https://www.cnblogs.com/jaysonteng/p/12585903.html

时间: 2024-08-30 13:06:13

pytorch 数据维度变换的相关文章

pytorch张量数据索引切片与维度变换操作大全(非常全)

(1-1)pytorch张量数据的索引与切片操作1.对于张量数据的索引操作主要有以下几种方式:a=torch.rand(4,3,28,28):DIM=4的张量数据a(1)a[:2]:取第一个维度的前2个维度数据(不包括2):(2)a[:2,:1,:,:]:取第一个维度的前两个数据,取第2个维度的前1个数据,后两个维度全都取到:(3)a[:2,1:,:,:]:取第一个维度的前两个数据,取第2个维度的第1个索引到最后索引的数据(包含1),后两个维度全都取到:(4)a[:2,-3:]:负号表示第2个维

PyTorch中Tensor的维度变换实现

对于 PyTorch 的基本数据对象 Tensor (张量),在处理问题时,需要经常改变数据的维度,以便于后期的计算和进一步处理,本文旨在列举一些维度变换的方法并举例,方便大家查看. 维度查看:torch.Tensor.size() 查看当前 tensor 的维度 举个例子: >>> import torch >>> a = torch.Tensor([[[1, 2], [3, 4], [5, 6]]]) >>> a.size() torch.Size

tensor维度变换

维度变换是tensorflow中的重要模块之一,前面mnist实战模块我们使用了图片数据的压平操作,它就是维度变换的应用之一. 在详解维度变换的方法之前,这里先介绍一下View(视图)的概念.所谓View,简单的可以理解成我们对一个tensor不同维度关系的认识.举个例子,一个[ b,28,28,1 ]的tensor(可以理解为mnist数据集的一组图片),对于这样一组图片,我们可以有一下几种理解方式: (1)按照物理设备储存结构,即一整行的方式(28*28)储存,这一行有连续的784个数据,这

pytorch数据读取

pytorch数据读取机制: sampler生成索引index,根据索引从DataSet中获取图片和标签 1.torch.utils.data.DataLoader 功能:构建可迭代的数据装在器 dataset:Dataset类,决定数据从哪读取及如何读取 batchsize:批大小 num_works:是否多进程读取数据,当条件允许时,多进程读取数据会加快数据读取速度. shuffle:每个epoch是否乱序 drop_last:当样本数不能被batchsize整除时,是否舍弃最后一批数据 D

pytorch数据拼接与拆分

1.cat:拼接 直接合并数据 2.stack拼接: 与cat不同的是,stack创建了一个新的维度,在拼接的同时,给数据增加了类别.并且stack的所有数据维度必须一致. 3.split拆分: 通过数据长度进行拆分 4.chunk拆分: 与split不同的是:chunk是指定拆分的个数,将数据拆分为指定个数. 原文地址:https://www.cnblogs.com/jaysonteng/p/12585931.html

魔镜批量条码出错(所有批量生成的条码都是一样的,并没有跟随数据进行变换)的解决方法

01,在对模板进行设置活动列与改列名时: 选中模板后,先设置活动列,再设置改列名! 02, 模板在设置活动列与改列名前,红色箭头指向是下图这样的 在设置活动列与改列名后,下图红色箭头的名字会变成下图那样,要是没有,需重新设置一下活动列与改列名 03,在进行批量前,要为条码模板加一个外框,一起选中后再点击生成可变

如何进行数据变换(转)

如何对右偏数据进行变换 现在,我们需要分情况讨论一下.在实际生活中,最常见的情形是靠近正无穷的一侧有一个长尾巴(如图1左),习惯上称为「右偏」(right-skewed)或「正偏态」(positive skewness).许多人会有点儿困惑,觉得图上分布的那个峰明明是向左边负数一侧偏的,怎么叫「右偏」「正偏态」呢?要记住,当我们描述偏态的方向时,说的是分布的尾巴,而不是峰.这本身没有什么大道理可讲,就是一种约定俗成而已. 图1 一个右偏(正偏态)的总体分布 右偏的分布之所以常见,是因为有许多变量

详解Oracle数据货场中三种优化:分区、维度和物化视图

转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的优化,大约的原理只有两个:一是数据分块储藏,便于数据的转储和管教:二是其中处理,长进数据供给的速度.本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,基上面两个大约的原理,借助于数据货场的观念,罗列数据库的优化措施:1.分区在数据货场中,事实表,索引表,维度表分

互联网金融做大数据风控的九种维度

在互联网金融迅猛发展的背景下,风险控制问题已然成为行业焦点,基于大数据的风控模型正在成为互联网金融领域的热门战场.那么,大数据风控到底是怎么一回事呢?与传统风控相比,它又是怎样来进行风险识别的呢?本文对此进行了探讨. 大数据能够进行数据变现的商业模式目前就是两个,一个是精准营销,典型的场景是商品推荐和精准广告投放,另外一个是大数据风控,典型的场景是互联网金融的大数据风控. 金融的本质是风险管理,风控是所有金融业务的核心.典型的金融借贷业务例如抵押贷款.消费贷款.P2P.供应链金融.以及票据融资都