引言:此函数常用于维度计算当中,网络搭建过程中,在下不才,将此函数理解为维度加一函数,也就是扩充在原来基础上再扩充一个一维 维度的函数。
如果在引言部分你只是懵懵懂懂,那下面就展示几个通俗易懂的例子吧!(默认情况下,图像的一般表述为(C*W*H)其中C代表通道数,C就是常说的三RGB通道,W代表的是图像的宽度,H代表图像的高度,下面以这个讲解)
数据库导入:
import torch from PIL import Image import matplotlib.pyplot as plt
1.首先在一维维度的空间张量,在开头加上/扩充一个维度。(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哈哈~)
欢迎和小伙伴梦一起学习,共同努力,加油!!!