返回顶部
首页 > 资讯 > 精选 >PyTorch中的squeeze()和unsqueeze()如何应用
  • 886
分享到

PyTorch中的squeeze()和unsqueeze()如何应用

2023-06-29 12:06:56 886人浏览 八月长安
摘要

本篇内容主要讲解“PyTorch中的squeeze()和unsqueeze()如何应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PyTorch中的squeeze()和unsqueeze()如

本篇内容主要讲解“PyTorch中的squeeze()和unsqueeze()如何应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PyTorch中的squeeze()和unsqueeze()如何应用”吧!

1.torch.squeeze

PyTorch中的squeeze()和unsqueeze()如何应用

squeeze的用法主要就是对数据的维度进行压缩或者解压。

先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。squeeze(a)就是将a中所有为1的维度删掉。不为1的维度没有影响。a.squeeze(N) 就是去掉a中指定的维数为一的维度。还有一种形式就是b=torch.squeeze(a,N) a中去掉指定的定的维数为一的维度。

换言之:

表示若第arg维的维度值为1,则去掉该维度,否则tensor不变。(即若tensor.shape()[arg] == 1,则去掉该维度)

例如:

一个维度为2x1x2x1x2的tensor,不用去想它长什么样儿,squeeze(0)就是不变,squeeze(1)就是变成2x2x1x2。(0是从最左边的维度算起的)

>>> x = torch.zeros(2, 1, 2, 1, 2)>>> x.size()torch.Size([2, 1, 2, 1, 2])>>> y = torch.squeeze(x)>>> y.size()torch.Size([2, 2, 2])>>> y = torch.squeeze(x, 0)>>> y.size()torch.Size([2, 1, 2, 1, 2])>>> y = torch.squeeze(x, 1)>>> y.size()torch.Size([2, 2, 1, 2])

2.torch.unsqueeze

PyTorch中的squeeze()和unsqueeze()如何应用

torch.unsqueeze()这个函数主要是对数据维度进行扩充。给指定位置加上维数为一的维度,比如原本有个三行的数据(3),在0的位置加了一维就变成一行三列(1,3)。a.squeeze(N) 就是在a中指定位置N加上一个维数为1的维度。还有一种形式就是b=torch.squeeze(a,N) a就是在a中指定位置N加上一个维数为1的维度。

>>> x = torch.tensor([1, 2, 3, 4])>>> torch.unsqueeze(x, 0)tensor([[ 1,  2,  3,  4]])>>> torch.unsqueeze(x, 1)tensor([[ 1],        [ 2],        [ 3],        [ 4]])

3.例子

给一个使用上述两个函数,并进行一次卷积的例子:

from torchvision.transfORMs import  ToTensorimport torch as tfrom torch import nnimport cv2import numpy as npimport cv2to_tensor = ToTensor()# 加载图像lena = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)cv2.imshow('lena', lena)# input = to_tensor(lena) 将ndarray转换为tensor,自动将[0,255]归一化至[0,1]。input = to_tensor(lena).unsqueeze(0)# 初始化卷积参数kernel = t.ones(1, 1, 3, 3)/-9kernel[:, :, 1, 1] = 1conv = nn.Conv2d(1, 1, 3, 1, padding=1, bias=False)conv.weight.data = kernel.view(1, 1, 3, 3)# 输出out = conv(input)out = out.squeeze(0)print(out.shape)out = out.unsqueeze(3)print(out.shape)out = out.squeeze(0)print(out.shape)out = out.detach().numpy()# 缩放到0~最大值cv2.normalize(out, out, 1.0, 0, cv2.NORM_INF)cv2.imshow("lena-result", out)cv2.waiTKEy()

结果图如下:

PyTorch中的squeeze()和unsqueeze()如何应用

到此,相信大家对“PyTorch中的squeeze()和unsqueeze()如何应用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: PyTorch中的squeeze()和unsqueeze()如何应用

本文链接: https://lsjlt.com/news/324871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PyTorch中的squeeze()和unsqueeze()如何应用
    本篇内容主要讲解“PyTorch中的squeeze()和unsqueeze()如何应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PyTorch中的squeeze()和unsqueeze()如...
    99+
    2023-06-29
  • PyTorch中的squeeze()和unsqueeze()解析与应用案例
    目录1.torch.squeeze2.torch.unsqueeze3.例子附上官网地址: https://pytorch.org/docs/stable/index.html 1....
    99+
    2024-04-02
  • 如何在pytorch中使用squeeze和cat函数
    今天就跟大家聊聊有关如何在pytorch中使用squeeze和cat函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 squeeze(): 去除size为1的维度,包括行和列。至...
    99+
    2023-06-15
  • pytorch中的squeeze函数、cat函数使用
    1 squeeze(): 去除size为1的维度,包括行和列。 至于维度大于等于2时,squeeze()不起作用。 行、例: >>> torch.rand(4,...
    99+
    2024-04-02
  • pytorch中如何使用model.eval()和BN层
    这篇文章给大家分享的是有关pytorch中如何使用model.eval()和BN层的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下class ConvNet(nn.module): &n...
    99+
    2023-06-15
  • PyTorch中如何应对梯度消失和爆炸问题
    梯度消失问题: 使用非饱和激活函数,如ReLU、LeakyReLU等 使用Batch Normalization来规范化网络的...
    99+
    2024-03-05
    PyTorch
  • Pytorch中expand()如何使用
    这篇文章主要介绍“Pytorch中expand()如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Pytorch中expand()如何使用”文章能帮助大家解决问题。Pytorch expand...
    99+
    2023-07-02
  • Pytorch中transforms.Resize()如何使用
    这篇文章主要介绍“Pytorch中transforms.Resize()如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Pytorch中transforms.Resize()如何使用”文章能帮...
    99+
    2023-07-02
  • PyTorch中torch.manual_seed()如何使用
    这篇文章主要介绍“PyTorch中torch.manual_seed()如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PyTorch中torch.manual_seed()如何使用”文章能帮...
    99+
    2023-07-02
  • PyTorch中如何进行模型的组件化和复用
    PyTorch中可以通过定义模型的组件(例如层、模块)来实现模型的组件化和复用。 1、定义模型组件:可以通过继承torch.nn.M...
    99+
    2024-03-06
    PyTorch
  • optimizer如何在Pytorch中使用
    本文章向大家介绍optimizer如何在Pytorch中使用,主要包括optimizer如何在Pytorch中使用的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。如何使用Optimizer要想...
    99+
    2023-06-06
  • 在Pytorch中如何使用contiguous
    这篇文章主要介绍“在Pytorch中如何使用contiguous”,在日常操作中,相信很多人在在Pytorch中如何使用contiguous问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Pytorch中如何...
    99+
    2023-06-06
  • 如何在Pytorch中使用Dataset和DataLoader读取数据
    本篇文章给大家分享的是有关如何在Pytorch中使用Dataset和DataLoader读取数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、前言确保安装scikit-im...
    99+
    2023-06-15
  • pytorch中的model.eval()和BN层的使用
    看代码吧~ class ConvNet(nn.module): def __init__(self, num_class=10): super(ConvN...
    99+
    2024-04-02
  • PyTorch中的train()、eval()和no_grad()的使用
    目录什么是train()函数?什么是eval()函数?什么是no_grad()函数?train()、eval()和no_grad()函数的联系总结在PyTorch中,train()、...
    99+
    2023-05-14
    PyTorch train() eval() no_grad()
  • pytorch中nn.Flatten()函数如何使用
    这篇文章主要介绍了pytorch中nn.Flatten()函数如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇pytorch中nn.Flatten()函数如何使用文章都会有所收获,下面我们一起来看看吧。t...
    99+
    2023-07-04
  • Pytorch中如何调用forward()函数
    目录Pytorch调用forward()函数Pytorch函数调用的问题和源码解读总结Pytorch调用forward()函数 Module类是nn模块里提供的一个模型构造类,是所有...
    99+
    2023-02-17
    Pytorch调用forward函数 Pytorch forward函数 Pytorch forward()函数
  • PyTorch中如何进行模型的部署和推理
    在PyTorch中进行模型的部署和推理通常有以下几个步骤: 加载已经训练好的模型: import torch import to...
    99+
    2024-03-05
    PyTorch
  • pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
    F.avg_pool1d()数据是三维输入 input维度: (batch_size,channels,width)channel可以看成高度 kenerl维度:(一维:表示widt...
    99+
    2024-04-02
  • Pytorch 中net.train 和 net.eval的使用说明
    在训练模型时会在前面加上: model.train() 在测试模型时在前面使用: model.eval() 同时发现,如果不写这两个程序也可以运行,这是因为这两个方法是针...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作