我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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()如何应用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

如何在pytorch中使用squeeze和cat函数

今天就跟大家聊聊有关如何在pytorch中使用squeeze和cat函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 squeeze(): 去除size为1的维度,包括行和列。至
2023-06-15

pytorch中如何使用model.eval()和BN层

这篇文章给大家分享的是有关pytorch中如何使用model.eval()和BN层的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下class ConvNet(nn.module): def __ini
2023-06-15

PyTorch中如何应对梯度消失和爆炸问题

梯度消失问题:使用非饱和激活函数,如ReLU、LeakyReLU等使用Batch Normalization来规范化网络的输入使用较小的学习率使用梯度裁剪,限制梯度的大小梯度爆炸问题:使用梯度裁剪,限制梯度的大小使用权重正则化,如L
PyTorch中如何应对梯度消失和爆炸问题
2024-03-05

PyTorch中如何进行模型的组件化和复用

PyTorch中可以通过定义模型的组件(例如层、模块)来实现模型的组件化和复用。1、定义模型组件:可以通过继承torch.nn.Module类来定义模型的组件。在__init__方法中定义模型的各个组件(层),并在forward方法中指定
PyTorch中如何进行模型的组件化和复用
2024-03-06

如何在Pytorch中使用Dataset和DataLoader读取数据

本篇文章给大家分享的是有关如何在Pytorch中使用Dataset和DataLoader读取数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、前言确保安装scikit-im
2023-06-15

PyTorch中如何进行模型的部署和推理

在PyTorch中进行模型的部署和推理通常有以下几个步骤:加载已经训练好的模型:import torchimport torch.nn as nn# 加载已经训练好的模型model = torch.load('model.pt
PyTorch中如何进行模型的部署和推理
2024-03-05

PyTorch中如何使用预训练的模型

在PyTorch中使用预训练的模型可以通过torchvision库中的models模块实现。该模块包含了一些常用的预训练模型,如ResNet、VGG、AlexNet等。以下是一个使用预训练的ResNet模型的示例:import torch
PyTorch中如何使用预训练的模型
2024-03-05

pandas中如何应用apply和lambda

这篇“pandas中如何应用apply和lambda”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“pandas中如何应用ap
2023-06-29

Java中psi-probe如何监控Tomcat和应用

这篇文章主要介绍了Java中psi-probe如何监控Tomcat和应用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。psi-probe这也是一个综合性的监控项目,可监控单个
2023-06-02

PHP中的Session和Cookie有何区别?如何应用?(请解释PHP中Session和Cookie的区别及它们的应用场景。)

Session和Cookie是用于在HTTP请求间存储用户数据的不同机制。Session存储于服务器端,持续时间限于会话,安全性较高,适用于存储会话相关信息;Cookie存储于客户端浏览器,持续时间更长,存储量有限,适用于存储持久偏好和设置。选择时考虑数据量、安全性、持续时间、用户隐私和浏览器支持等因素。
PHP中的Session和Cookie有何区别?如何应用?(请解释PHP中Session和Cookie的区别及它们的应用场景。)
2024-04-02

汇编语言中段如何定义和应用

这篇文章主要为大家展示了“汇编语言中段如何定义和应用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“汇编语言中段如何定义和应用”这篇文章吧。段将一段内存定义为一个段,用一个段地址指示段,用偏移地址
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录