Pytorch重点概念笔记:都是本人学习中真实遇到的(一)

1.torch.squeeze的原理参数和使用方法

torch.squeeze 是PyTorch中的一个函数,用于减少张量的维数,具体来说,它会移除所有维数为1的维度。这个操作通常用于处理那些在特定操作(如卷积或池化)后可能产生不必要的单维度张量。

原理:
在某些情况下,张量操作会生成形状中包含单维度的张量。例如,一个形状为 [B, C, 1, 1] 的张量可能是在某个卷积操作后产生的,其中 B 是批量大小,C 是通道数,而最后两个维度是1。在这些情况下,单维度并没有携带任何有用的空间信息,只是增加了张量的维数。torch.squeeze 的作用就是移除这些不必要的单维度,从而简化张量的形状。

参数:
torch.squeeze 可以接受一个或两个参数:

  • input (Tensor) – 输入张量。
  • dim (int, optional) – 如果指定了,则只会在给定的维度上移除单维度。如果未指定,则移除所有单维度。

使用方法:
下面是一些 torch.squeeze 的使用示例:

import torch
# 创建一个具有单维度的张量
tensor = torch.tensor([[1], [2], [3]])
# 使用squeeze移除所有单维度
squeezed_tensor = torch.squeeze(tensor)
print(squeezed_tensor)  # 输出: tensor([1, 2, 3])
# 创建一个具有多个单维度的张量
batch_tensor = torch.tensor([[[[1]], [[2]]]])
# 使用squeeze移除所有单维度
squeezed_batch_tensor = torch.squeeze(batch_tensor)
print(squeezed_batch_tensor)  # 输出: tensor([1, 2])
# 只在特定维度上移除单维度
specific_squeeze = torch.squeeze(batch_tensor, 2)
print(specific_squeeze)  # 输出: tensor([[[1], [2]]])

在上面的例子中,第一个 tensor 是一个二维张量,其中一个维度是单维度。使用 torch.squeeze 后,单维度被移除,得到一个一维张量。第二个 batch_tensor 是一个四维张量,其中有两个单维度。在默认情况下,torch.squeeze 会移除所有单维度,但如果指定了 dim 参数,它只会在那个维度上移除单维度。在最后一个例子中,我们只在第2个维度上移除了单维度。

2.pytorch中.transpose()的使用方法

在PyTorch中,.transpose()函数用于交换张量的两个维度。这个操作对于改变张量的形状和进行矩阵转置特别有用。下面是.transpose()函数的基本使用方法:

import torch
# 创建一个二维张量
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])
# 使用.transpose()交换两个维度
# 第一个参数是维度索引,第二个参数是维度索引
transposed_tensor = tensor.transpose(0, 1)
print(tensor)
print(transposed_tensor)

输出将会是:

tensor([[1, 2, 3],[4, 5, 6]])
tensor([[1, 4],[2, 5],[3, 6]])

在这个例子中,我们创建了一个2x3的二维张量,然后使用.transpose(0, 1)来交换第0维和第1维,这样就得到了一个转置后的3x2张量。
对于更高维度的张量,你可以指定任意两个维度索引来交换它们的位置。例如,对于一个3维张量,你可以使用.transpose(1, 2)来交换第1维和第2维。
此外,对于矩阵(2D张量),PyTorch还提供了一个特殊的.t()方法,它是.transpose(0, 1)的简写形式,用于快速进行矩阵转置:

# 使用.t()进行矩阵转置
transp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPP语法(六)——函数模板

CPP语法 六—函数模板 一、 模板1.1 函数模板1.2 重载函数模板1.3 类模板1.3.1 简单类模板1.3.2 默认模板参数1.3.3 为具体类型的参数提供默认值1.3.4 有界数组模板 1.4 模板的使用1.4.1 定制模板类1.4.2 定制类模板成员函数 一、 模板 模板是c的高级特性,分为函数…

【详细实现】v1.0 随机点名应用

1.引言 前面对这个应用的功能做了详细的分析(长什么样、能干什么),以先这样对一个项目最开始的分析成为需求分析,需求分析之后就是设计阶段。 那么一般的项目,在设计阶段都需要干什么呢?在需求分析阶段确定…

Spring Cloud Eureka面试题

Spring Cloud Eureka面试题 1. Eureka基础概念1.1 什么是Eureka?1.2 Eureka的组件和架构有哪些元素组成?1.3 Eureka Server和Eureka Client有什么区别?1.4 如何描述Eureka的自我保护机制? 2. 服务注册与发现2.1 如何将服务注册到E…

[C++][算法基础]数字三角形(动态规划)

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 73 88 1 02 7 4 4 4 5 2 6 …

c++ 智能指针 交换函数实验

1.概要 c 智能指针 交换函数实验 交换后&#xff0c;两个指针管理的目标对象会发生交换 sh_ptr1.swap(sh_ptr2); 2.代码 #include <iostream> using namespace std;int main() {shared_ptr<int> sh_ptr1 std::make_shared<int>(5);shared_ptr<int>…

【c++基础】求细胞数量

说明 一矩形阵列由数字 0 到 9 组成&#xff0c;数字 1 到 99 代表细胞&#xff0c;细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞&#xff0c;求给定矩形阵列的细胞个数。 输入数据 第一行两个整数代表矩阵大小 n 和 m。 接下来 n 行&#xff0c;每行一个长度…

kubernetes部署控制器Deployment

一、概念 在学习rc和rs控制器资源时&#xff0c;这两个资源都是控制pod的副本数量的&#xff0c;但是&#xff0c;他们两个有个缺点&#xff0c;就是在部署新版本pod或者回滚代码的时候&#xff0c;需要先apply资源清单&#xff0c;然后再删除现有pod&#xff0c;通过资源控制&…

华为 obs相关

obd配置 hw-obs:endpoint: ak: sk: bucketname:获取桶列表 public class HwObsController {Value("${hw-obs.ak}")private String hwObsAk;Value("${hw-obs.sk}")private String hwObsSk;Value("${hw-obs.endPoint}")private String hwObsEndp…

惯性测量单元(IMU)CAN接口:M-G552PJ7

M-G552PJ7是一种小形状因子惯性测量单元&#xff08;IMU&#xff09;&#xff0c;具有6个自由度&#xff1a;三轴角率和线性加速度&#xff0c;利用高精度补偿技术提供高稳定性和 高精度的测量能力。 各种校准参数存储在IMU的内存中&#xff0c;并在IMU的电源被打开后自动反映在…

python项目练习-1

获取无忧书城的小说内容&#xff01; import requests # 导入请求包 from lxml import etree # 导入处理xml数据包url https://www.51shucheng.net/wangluo/douluodalu/21750.html book_num 1 # 文章页数 download_urls [] # 定义一个空列表&#xff0c;表示我们下载过小…

如何使用bof-launcher在CC++Zig应用程序中执行Beacon对象文件(BOF)

关于bof-launcher bof-launcher是一款针对Beacon对象文件&#xff08;BOF&#xff09;的安全测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松在C/C/Zig应用程序中执行Beacon对象文件&#xff08;BOF&#xff09;。 Cobalt Strike 4.1于2020年6月25日发…

Checkpoint机制和生产配置

1.前提 在将Checkpoint之前&#xff0c;先回顾一下flink处理数据的流程&#xff1a; 2. 概述 Checkpoint机制&#xff0c;又叫容错机制&#xff0c;可以保证流式任务中&#xff0c;不会因为异常时等原因&#xff0c;造成任务异常退出。可以保证任务正常运行。 &#xff08;1&…

全志ARM-修改开发板内核启动日志

修改开发板内核日志输出级别&#xff1a; 默认输出级别为1&#xff0c;需要用超级用户权限修改 sudo vi /boot/orangepiEvn.txt 把第一行内核启动输出权限改为7&#xff0c;第二行把输出方式该为“serial”串口输出

后端面试真题--计算机基础篇

计算机基础 1、计算机网络&#xff08;常考&#xff09;2、操作系统3、数据结构4、Linux二级目录三级目录 1、计算机网络&#xff08;常考&#xff09; 1、介绍一下网络七层架构&#xff0c;TCP/IP的四层架构&#xff0c;每一层都有什么协议 2、讲讲TCP/IP的流量控制和拥塞控制…

前端实现将二进制文件流,并下载为excel文件

目录 一、关于二进制流二、项目实践三、常见问题及解决 一、关于二进制流 含义&#xff1a;二进制流是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同。 二进制文件可以包含任意类型的数据&#xff0c;例如&#xff1a;图像、音频、视频…

机器学习笔记 - scikit-learn中的metric参数和metric_params参数如何使用?

在 scikit-learn 库中的一些算法里面,这里是指需要使用距离度量或相似度度量的算法,这里拿KNeighborsclassifier举例来说,会有metric参数,这个参数用于指定距离度量方法。这个参数有多个可选项,常用的有以下几种: 1.euclidean:欧氏距离。这是默认的距离度量方法。 2.manha…

c++输入年月日,计算是该年的第几天

直接把每个月的天数存到数组直接相加会很方便&#xff0c;不用过多的判断。 注意&#xff1a;润年判断方法&#xff08;可以被4整除但不能被100整除&#xff0c;或者可以被400整除&#xff09; #include <iostream> using namespace std;int main() {int year,month,da…

PyCharm 中的特殊标记

在使用 PyCharm 开发 Python 项目的时候&#xff0c;经常会有一些特殊的标记&#xff0c;有些是 IDE 提示的代码规范&#xff0c;有些则为了方便查找而自定义的标记。 我在之前写过一些关于异常捕获的文章&#xff1a;Python3 PyCharm 捕获异常报 Too broad exception clause …

LeetCode——滑动窗口

滑动窗口 包含特定元素的子串&#xff08;要匹配到的目标&#xff09;&#xff0c;或最长[这个好像没啥意思]、或最短、或等长 思考&#xff1a;&#xff08;暂时感受&#xff09; 1&#xff09;什么时候扩充窗口——串没走完就得扩呀&#xff1b; 2&#xff09;窗口扩充后…

2024年Java JDK下载安装教程,附详细图文

文章目录 简介一、JDK的下载二、JDK的安装三、设置环境变量(不一定需要执行&#xff09; 简介 博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f34…