首先这个squeeze单词啥意思:
1.squeeze(1)和squeeze(-1)作用:
两者的效果一样,都是给张量tensor降维,但不是啥张量都可以用这两个函数来降维,它只能降维一种情况下张量的维度。就是我的张量tensor是一个n1维度的张量,例如:张量[[1], [2], [3]]是一个31维的,调用这两个函数后效果如图:
但是如果不是n1的这种2维张量的话,如本就是1维的,或者mn(其中m和n都是大于1的)这种的话,调用这个函数一点效果没有。
2.squeeze(0)的作用:
当张量是一个1n维度的张量时,例如:张量[[1, 2, 3]]是一个13维的,调用这个函数后的效果图如下:
但是如果不是1n的这种2维张量的话,如本就是1维的,或者mn(其中m和n都是大于1的)这种的话,调用这个函数一点效果没有。
3.unsqueeze(1)和unsqueeze(-1)作用:
和squeeze(1)和squeeze(-1)是反着的,如果我就是一个一维的张量,我调用这个函数,我就变成上面第1节中的原本的样子。
例如:张量[1.2, -5.6, 9, 0.004],调用这两个函数后的效果为:
如果我就是一n*m的2维的张量,调用这两个函数后的效果是啥呢?果然预期的一样,一点效果没有
例如:
4.unsqueeze(0)作用:
和第2节中的squeeze(0)的作用是反这的。
例如:张量[1.2, -5.6, 9, 0.004],调用这个函数后的效果为:
5.当维度不在是1,2维时,例如3维的张量时,测试发现,如果参数为1或者-1,此时函数关心的是第2维度是不是1,如果是1的话,就能类比进行上面1和3节的操作;如果参数是0,此时函数只关心第1维度是不是1(你不知道是不是1,size()一下看看),则就是类比进行上面2和4节的操作。
例如:举个第1维度是1的,使用参数0,调用函数试试效果:
Original: https://blog.csdn.net/guihaiyuan123/article/details/113455775
Author: 海木石
Title: pytorch学习之—squeeze()和unsqueeze()函数功能及使用
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/708444/
转载文章受原作者版权保护。转载请注明原作者出处!