张量(Tensor)的降维与升维

一、Tensor的降维——torch.squeeze()函数

1.tensor的维度

小编对于张量的理解一直很模糊,今天用Excel来帮助大家理解,希望对大家有所帮助。

首先,张量是多维数组,这里不多赘述,可以去查阅相关资料。今天重点介绍的是张量的维度。

张量有一维、二维、三维、四维等。

一维:

正如我们的Eecel表里的3个数字就组成一维数据。

你也可以把它理解为一行数据,即由单个元素组成的一组数据。

 

 

二维:

 二维就是一维的叠加。

前面所说可以把“一行”看作一维

那么二维就是多行,也就相当于Excel里的一个工作部(下方的sheet1)

但是这里要注意,代码最外面有两个中括号,如果只有一个中括号,就会报错。

这里简单记忆可以理解为:有几维,最外面的中括号就有几个

 三维:

 torch.Size([1,2,3]),第一个1表示1个深度,你可以理解为Excel的一个工作部,如果是2,那就是两个工作部。

第二个数字表示2行,第三个数字表示3列。

三维就相当于Excel里的多个工作部

上图所示是深度为1,即1个Excel工作部,接下来我们来看深度为2的,即2分Excel工作部:

这里就有两个深度,相当于一个Excel文件中的两个工作部,sheet1和sheet2。

注意:标黄处是两个工作部的分隔

前文所说,有几个维度就有几个维度。标黄处是2个中括号,即标黄中括号里的数据是第二维,那么这两个中括号中的二维数据(即多行数据)一叠加就成了我们的三维数据(即一个或多个Excel工作部)

如图

四维 :

现在已经介绍完三维了,也就是多个工作部,那这些工作部最终就能组成一个Excel文件,即第四维。

 

这里的torch.Size([1,1,2,3]),左边第一个数字 1表示这个张量在第四维占了一个,即一个Excel表,第二个数字1表示三维上的1,即1个工作部

第三个数字2表示每个工作部里有2行,当然,这里就1个工作部

第四个数字3表示每个工作部里有3列。

2.torch.squeeze()函数

接下来,我们就要介绍tensor的升维与降维,降维用到的函数是torch.squeeze()函数。

那么升维用到的就是torch.unsqueeze()函数。

为什么要降维呢?

小编认为这是为了减少计算耗时,就像你的一个Excel文件,里面有10个工作部,但只有第一个工作部有数据,那其他9个工作部在大部分时候就是无用的,此时就需要用到降维。

我们看下面这个代码,这里,第三维第4维都是只有一个占位(维数)的,也就是说,此时我们在第3维,第4维看到的数据都是一样的,那么就可以降去第3维和第4维。

而第二维有3个占位(维数),如果去掉这一维,那么数据就会收到影响。

以下是降维的具体代码

这里的torch.squeeze(A,0)的0时什么意思呢?

在第0个位置,这个函数就是,如果第0个位置的维度是1,那么就删除该维度

在原本的维度(1,1,3,2)中,从左向右一次是位置0,1,2,3,。没有第四位

 如果我们输入torch.squeeze(A,2),看一看结果:

一个维度也没降,因为第2位置的维度是3,自然不会删除该维度。

那我们再来看看如果输入torch.squeeze(A,4)会是什么结果呢

 (哈哈,当然会报错啦)

同样,也可以输入负数的,负数就有-4,如果是负数,那从左向右一次是-4,-3,-2,-1

 

二、Tensor的升维——torch.unsqueeze(函数)

介绍完降维,我们来介绍一下升维吧

降维理解了,升维就不难理解了

b=a.unsqueeze(0)即在索引0对应的位置增加一个维度

下面是咋索引1对应位置增加一个维度

这是在索引2位置增加:

 

 同样的,这里也没有3,但是可以有负数,就不一一赘述了。

 

  • 19
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值