首先这个squeeze单词啥意思:

1.squeeze(1)和squeeze(-1)作用:

两者的效果一样,都是给张量tensor降维,但不是啥张量都可以用这两个函数来降维,它只能降维一种情况下张量的维度。就是我的张量tensor是一个n*1维度的张量,例如:张量[[1], [2], [3]]是一个3*1维的,调用这两个函数后效果如图:

但是如果不是n*1的这种2维张量的话,如本就是1维的,或者m*n(其中m和n都是大于1的)这种的话,调用这个函数一点效果没有。

注意:如果小括号里不是1怎么办?这个括号里的1是什么意思?具体而言,如果一个张量有四个维度的,squeeze(index)会将张量中第index维度,且大小为1的维度进行去除,从而减少张量的维度。如果index是负整数,那就是倒数第index个维度。

2.squeeze(0)的作用:

当张量是一个1*n维度的张量时,例如:张量[[1, 2, 3]]是一个1*3维的,调用这个函数后的效果图如下:

但是如果不是1*n的这种2维张量的话,如本就是1维的,或者m*n(其中m和n都是大于1的)这种的话,调用这个函数一点效果没有。

3.unsqueeze(1)和unsqueeze(-1)作用:

和squeeze(1)和squeeze(-1)是反着的,如果我就是一个一维的张量,我调用这个函数,我就变成上面第1节中的原本的样子。

注意:如果小括号里不是1怎么办?这个括号里的1是什么意思?具体而言,如果一个张量有五个维度的,unsqueeze(index)会在该张量的第index维度上增加一个维度值为1的维度,例如维度是(3, 2, 1),index是2的话,就会解压成(3, 2, 1, 1)。如果index是负整数,那就是倒数第index个维度。

例如:张量[1.2, -5.6, 9, 0.004]的维度是(4,),调用这两个函数后的效果为:维度变成(4,1)

如果我就是一n*m的2维的张量,调用这两个函数后的效果是啥呢?

例如:

4.unsqueeze(0)作用:

和第2节中的squeeze(0)的作用是反这的。

例如:张量[1.2, -5.6, 9, 0.004],调用这个函数后的效果为:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐