squeeze pytorch,squeezenet pytorch
本文主要介绍PyTorch中squeeze()和Unseeze()的分析和应用案例。文章内容介绍的比较详细,有需要的朋友可以参考一下。希望对你有帮助。
00-1010 1.火炬。挤压2。火炬。挤压3。附上官网地址:的例子
https://pytorch.org/docs/stable/index.html
目录
Squeeze主要用于压缩或解压缩数据的维度。
先看torch.squeeze()。这个函数主要是压缩数据的维度,去掉维度为1的维度,比如一行或者一列。在删除维度为1的第一个维度后,一行中有三列(1,3)的数字变为(3)行。挤压(a)是删除a中1的所有维度,不是1的维度没有影响。A.squeeze(N)是去掉a中指定的一维的维,还有一种形式,就是在b=torch.squeeze(a,N) a中,去掉指定的一维的维。
换言之:
如果arg维度的维度值为1,则该维度将被删除;否则,张量将保持不变。(也就是说,如果tensor.shape()[arg]==1,维度将被删除)
例如:
一个维数为2x1x2x1x2的张量,不要去想它是什么样子的。挤压(0)不变,挤压(1)变成2x2x1。(0从最左边的维度开始计数)
x=torch.zeros(2,1,2,1,2)
x.size()
火炬。大小([2,1,2,1,2])
y=火炬挤压(x)
y.size()
火炬。大小([2,2,2])
y=torch.squeeze(x,0)
y.size()
火炬。大小([2,1,2,1,2])
y=torch.squeeze(x,1)
y.size()
火炬。大小([2,2,1,2])
1.torch.squeeze
torch.unsqueeze()函数主要用于扩展数据维度。在指定位置增加一个维度的维度,比如原来有一个三行数据(3),在0的位置增加一个维度,就变成了一行三列(1,3)。A.squeeze(N)是指定A中的位置N加上一个维数为1的维数。另一种形式是b=torch.squeeze(a,n)。A是指定A中的位置n加上一个维度为1的维度。
x=torch .张量([1,2,3,4])
torch . unsqueze(x,0)
张量([[ 1,2,3,4]])
torch . unsqueze(x,1)
张量([[ 1],
[ 2],
[ 3],
[ 4]])
2.torch.unsqueeze
给一个使用上述两个函数,并进行一次卷积的例子:
从火炬视觉。将导入转换为传感器
将火炬作为t导入
从火炬进口nnimport cv2
将numpy作为np导入
导入cv2
to_tensor=ToTensor()
#加载图像
lena=cv2.imread(lena.jpg ,cv2。IMREAD _灰度)
cv2.imshow(lena ,lena)
# input=to_tensor(lena)将ndarray转换为张量,并自动将[0,255]归一化为[0,1]。
输入=to_tensor(lena)。取消排队(0)
#初始化卷积参数
kernel=t.ones(1,1,3,3)/-9
内核[:1,1]=1
conv=nn。Conv2d(1,1,3,1,padding=1,bias=False)
conv.weight.data=kernel.view(1,1,3,3)
#输出
输出=conv(输入)
out=out.squeeze(0)
打印(输出.形状)
out=out.unsqueeze(3)
打印(输出.形状)
out=out.squeeze(0)
打印(输出.形状)
Out=out.detach()。numpy()#缩放到0~最大值
cv2.normalize(out,out,1.0,0,cv2。NORM_INF)
cv2.imshow(lena-result ,out)
cv2.waitKey()
结果图如下:
关于PyTorch中的squeeze()和Unseeze()分析及应用案例的这篇文章到此为止。有关squeeze()和Unseeze()分析的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
references:
[1]陈云。PyTorch在深度学习框架中的介绍与实践。北京:电子工业出版社,2018。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。