引言:此函数常用于维度计算当中,网络搭建过程中,在下不才,将此函数理解为维度加一函数,也就是扩充在原来基础上再扩充一个一维 维度的函数。
如果在引言部分你只是懵懵懂懂,那下面就展示几个通俗易懂的例子吧!(默认情况下,图像的一般表述为(C*W*H)其中C代表通道数,C就是常说的三RGB通道,W代表的是图像的宽度,H代表图像的高度,下面以这个讲解)
数据库导入:
import torchfrom PIL import Imageimport matplotlib.pyplot as plt1.首先在一维维度的空间花痴的香菇,在开头加上/扩充一个维度。(Y,X)
1》在Y轴方向的扩张
代码:
data1=torch.tensor([1,2,5,9])print(data1,data1.dim(),data1.size())data2=torch.unsqueeze(data1,0)print(data2,data2.dim(),data2.size())output:
tensor([1, 2, 5, 9]) 1 torch.Size([4])
tensor([[1, 2, 5, 9]]) 2 torch.Size([1, 4])
分析:在原来的一维维度花痴的香菇扩充为二维维度花痴的香菇。类似于原来在X轴上的一维数据,在Y轴上扩张。
2》在X轴方向上的扩张。
代码:
data1=torch.tensor([1,2,5,9])print(data1,data1.dim(),data1.size())data2=torch.unsqueeze(data1,1)print(data2,data2.dim(),data2.size())output:
tensor([1, 2, 5, 9]) 1 torch.Size([4])
tensor([[1],
[2],
[5],
[9]]) 2 torch.Size([4, 1])
分析:类似于原来在Y轴上的一维数据,在X轴上扩张。
3.在二维空间上的扩张。(Z)
1》首先在Z轴上的扩张。
代码:
data1=torch.randn((2,3))print(data1,data1.dim(),data1.size())data2=torch.unsqueeze(data1,0)print(data2)print(data2.dim(),data2.size())output:
tensor([[ 1.1373, 0.1755, -0.3572], [ 0.3606, -0.4550, -1.0797]]) 2 torch.Size([2, 3])tensor([[[ 1.1373, 0.1755, -0.3572], [ 0.3606, -0.4550, -1.0797]]])3 torch.Size([1, 2, 3])2》在Y上的扩张。
代码:
data1=torch.randn((2,3))print(data1,data1.dim(),data1.size())data2=torch.unsqueeze(data1,1)print(data2)print(data2.dim(),data2.size())output:
tensor([[-0.7019, -0.4293, -0.5671], [-1.6799, -0.0126, 0.1750]]) 2 torch.Size([2, 3])tensor([[[-0.7019, -0.4293, -0.5671]], [[-1.6799, -0.0126, 0.1750]]])3 torch.Size([2, 1, 3])3》在Z轴上的扩张。
代码:
data1=torch.randn((2,3))print(data1,data1.dim(),data1.size())data2=torch.unsqueeze(data1,-1)print(data2)print(data2.dim(),data2.size())output:
tensor([[ 1.1902, -1.2110, -0.0837], [-0.0760, 0.5523, -1.3458]]) 2 torch.Size([2, 3])tensor([[[ 1.1902], [-1.2110], [-0.0837]], [[-0.0760], [ 0.5523], [-1.3458]]])3 torch.Size([2, 3, 1])4.结束:
GAME OVER
如果理解错误,欢迎大家批评,及时纠正强健的豆芽的错误哦,真心感谢你的纠正!!!
如果小伙伴梦有疑问欢迎在评论区留言哦!!!
如果感觉不错的话!点个赞呗,不用客气!(O(∩_∩)O哈哈~)
欢迎和小伙伴梦一起学习,共同努力,加油!!!