Pytorch中torch.unsqueeze()与torch.squeeze()函数详细解析

yizhihongxing

Pytorch 中 torch.unsqueeze() 与 torch.squeeze() 函数详细解析

1. 简介

torch.unsqueeze()torch.squeeze() 是 pytorch 中的两个常用函数,用于调整张量的形状。

  • torch.unsqueeze(input, dim=None, *, out=None):
    在指定维度上增加一个维度。返回的张量与 input 张量共享数据存储空间,即 input.storage() 与返回的张量的存储空间相同。input.dim() 的值加 1,如果 dim=None 则在第一维增加一维,否则在 dim 维度增加一维。

  • torch.squeeze(input, dim=None, *, out=None):
    在指定维度上移除一个维度。返回的张量与 input 张量共享数据存储空间,即 input.storage() 与返回的张量的存储空间相同。input.dim() 的值减 1,如果 dim=None 则移除所有大小为 1 的维度,否则移除指定维度,如果在指定维度上的大小不为 1,则返回的张量与 input 张量相同。

2. 用法举例

2.1 使用 torch.unsqueeze()

对于一个张量 A,如果要在第二个维度上增加一个维度,则可以使用以下代码:

import torch
A = torch.randn(3, 4)
B = torch.unsqueeze(A, dim=1)
print(A.shape)  # (3, 4)
print(B.shape)  # (3, 1, 4)

在代码中,我们使用 torch.randn() 生成一个形状为 (3, 4) 的随机张量 A,然后在第二个维度上增加一个维度得到张量 B,B 的形状为 (3, 1, 4)

2.2 使用 torch.squeeze()

对于一个张量 C,如果要将第二个维度上的大小为 1 的维度移除,则可以使用以下代码:

import torch
C = torch.randn(3, 1, 4)
D = torch.squeeze(C, dim=1)
print(C.shape)  # (3, 1, 4)
print(D.shape)  # (3, 4)

在代码中,我们使用 torch.randn() 生成一个形状为 (3,1,4) 的随机张量 C,然后在第二个维度上移除大小为 1 的维度得到张量 D,D 的形状为 (3, 4)。如果在第二维度上的大小不为 1,那么返回的张量与输入的张量 C 形状相同。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytorch中torch.unsqueeze()与torch.squeeze()函数详细解析 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 详解OpenCV和PIL读取和显示图像的差异

    我们先来介绍一下OpenCV和PIL。OpenCV是一个广泛用于计算机视觉和机器学习的开源计算机视觉库,提供了很多图像处理功能。而PIL(Python Image Library)是Python的一个图像处理库,也可以进行图像的读取、保存以及一些基本的图像处理。 在Python中读取和显示图像,我们可以使用OpenCV和PIL来实现。但是这两者的读取和显示图…

    人工智能概论 2023年5月24日
    00
  • python实现学员管理系统(面向对象版)

    下面我来详细讲解“Python实现学员管理系统(面向对象版)”的攻略。 系统介绍 本系统基于Python面向对象编程实现,能够实现对学员的管理,包括添加学员、删除学员、查看学员列表、修改学员信息等功能。本系统采用了文本文件存储数据的方法,每个学员的信息都存储在一个独立的文本文件中。 系统功能 本系统实现了如下功能: 添加学员信息; 删除学员信息; 修改学员信…

    人工智能概览 2023年5月25日
    00
  • Django中日期处理注意事项与自定义时间格式转换详解

    下面是关于”Django中日期处理注意事项与自定义时间格式转换”的详细攻略。 1. Django中日期处理注意事项 在Django中,日期处理涉及到时区以及日期的格式化等问题。下面介绍一些需要注意的问题: 1.1 时区问题 Django建议存储UTC时间,并在显示或输出时使用用户的时区。在设置中应该正确设置TIME_ZONE为所在时区,然后将程序的内部时间转…

    人工智能概论 2023年5月25日
    00
  • Nginx反向代理学习实例教程

    当谈到Nginx时,最常被提到的就是它作为一个反向代理的功能。反向代理在现代网络架构中扮演着非常重要的角色,因为它可以允许多个服务器在后端工作,但在前端仅暴露一个出口。这也有助于提高系统的可扩展性和安全性。 以下是Nginx反向代理的学习实例教程,它会带你从头开始学习如何使用Nginx来实现反向代理。 技能要求 在深入学习Nginx反向代理之前,需要掌握以下…

    人工智能概览 2023年5月25日
    00
  • python字符串循环左移

    当需要对字符串进行位移操作时,可以使用字符串切片来进行操作。Python中字符串切片的操作形式为s[start:end:step],其中start为起始位置(包含该位置),end为结束位置(不包含该位置),step为步长(正数表示从左往右取值,负数表示从右往左取值,默认为1)。 实现循环左移的一种简单方法是将字符串切成两部分:第一部分为移动的位数对原字符串长…

    人工智能概论 2023年5月25日
    00
  • Java实现添加文字水印&图片水印的方法详解

    以下是关于“Java实现添加文字水印&图片水印的方法详解”的完整攻略: 1. 简介 在实际的开发中,为了确保图像、文档等资源的版权安全,我们需要对其进行加水印处理。水印包括文字水印和图片水印。本文主要讲解如何使用Java语言实现添加文字水印、图片水印的步骤和示例。 2. 添加文字水印 2.1. 实现原理 添加文字水印的原理是在图片上添加文字,并设置文…

    人工智能概览 2023年5月25日
    00
  • 使用SpringAOP获取用户操作日志入库

    使用SpringAOP获取用户操作日志入库是一个常见的场景,可以通过AOP的方式实现,在用户操作某个方法时自动记录用户的操作日志,并将日志写入数据库中,方便后续的查询和分析。以下是实现该功能的完整攻略: 1. 配置依赖库 首先,需要在pom.xml中配置依赖库,包括Spring AOP和Mybatis等库。示例代码如下: <dependency>…

    人工智能概览 2023年5月25日
    00
  • 商业效率

    商业效率攻略 商业效率是指企业在执行业务中,通过节约成本,提高效率,达到利润最大化的目标。下面是一些商业效率的攻略: 1. 流程优化 详细规划流程和标准操作程序 利用信息化技术简化流程 减少流程重复、缩短执行时间 审核流程精简、提升效率 示例1:某电商采购流程优化 针对采购流程,制定详细的标准操作程序;采用采购管理系统,整合供应商信息和产品信息库,实时掌握库…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部