【学习】基础知识

1. 不同的维度表示

图像的维度表示(H , W , C):

对于一张彩色图像,通常有三个通道(红、绿、蓝),每个通道都是一个二维矩阵。假设图像的高度为 H,宽度为 W,那么图像的维度表示为 (H, W, 3)。这里的 3 表示三个通道。

对于灰度图像,只有一个通道,其维度表示为 (H, W)。

PyTorch Tensor 的维度表示(batchSize , C , H , W ):

PyTorch Tensor 的维度表示通常是 (batch_size, channels, height, width),其中:

batch_size 表示一个批次中包含的样本数。
channels 表示图像的通道数,与图像的颜色通道数相对应。
height 表示图像的高度。
width 表示图像的宽度。
因此,一张彩色图像在 PyTorch Tensor 中的维度表示为 (1, 3, H, W),其中 1 表示批次大小为 1。一张灰度图像在 PyTorch Tensor 中的维度表示为 (1, 1, H, W)。

在处理图像时,这样的维度表示是为了与深度学习模型的输入格式相匹配。深度学习模型通常期望一批数据,即使只有一张图像,也需要在批次维度上进行表示。

unsqueeze 和 squeeze的用法

squeeze 单词的意思是 挤压、压缩。

unsqueeze 是 PyTorch 中的一个操作,用于在指定的维度上插入新的维度。这个操作在张量的形状中插入一个大小为 1 的新维度。详细解释一下 unsqueeze 的用法和作用:

	new_tensor = original_tensor.unsqueeze(dim)

参数 dim: 要插入新维度的位置(维度索引,下标从0开始)。

例如,对于一个三维张量 tensor,形状为 (A, B, C),如果我们使用 tensor.unsqueeze(0),那么将在第 0 维(最前面)插入一个新的维度,形状变为 (1, A, B, C)。

squeeze 是 PyTorch 中的一个操作,用于去除张量中大小为 1 的维度。它的作用是在张量的形状中去除不必要的、大小为 1 的维度。详细解释一下 squeeze 的用法和作用:

	new_tensor = original_tensor.squeeze(dim)

参数 dim (可选): 要去除的维度索引。如果指定了 dim,那么只会去除指定位置的大小为 1 的维度。如果不指定,则会将所有维度大小为1的维度去除掉。

例如,对于一个四维张量 tensor,形状为 (1, A, 1, B),如果我们使用 tensor.squeeze(),那么将去除所有大小为 1 的维度,形状变为 (A,B)。
如果我们使用 tensor.squeeze(2),那么只会去除第 2 维(从 0 开始计数)上的大小为 1 的维度,形状变为(1,A,B)

2. transforms.ToTensor()

transforms.ToTensor() 操作将图像的像素值转换为 PyTorch 的 Tensor 格式,并自动进行了归一化,使得像素值范围在 0 到 1 之间。具体来说,它会将图像中每个像素的整数值除以 255,将像素值缩放到 0 到 1 之间。

例如,对于一个像素值为 127 的灰度图像,经过 transforms.ToTensor() 后,其对应的值将变为 127/255 = 0.498。这个操作是为了将像素值标准化到一个更小的范围,有助于训练深度学习模型时的稳定性和收敛速度。

总之,transforms.ToTensor() 会将图像中的所有像素值缩放到 0 到 1 之间。

3.torch.argmax()

argmax函数:torch.argmax(input, dim=None, keepdim=False)返回指定维度最大值的序号,dim给定的定义是:the demention to reduce.也就是把dim这个维度的,变成这个维度的最大值的index。

参考bolg:torch.argmax函数学习

通常,使用torch.argmax()得到的是一个类别索引。因为他直接读取出了最大值,通常最大值表示最大概率。
具体应用参考:关于torch.argmax()的在深度学习中应用的理解
类别索引表示模型对每个像素点的预测结果所属的类别。在语义分割任务中,每个像素点被分配一个类别,这个类别索引通常对应于模型所学习的类别标签。

例如:分类任务中的预测类别获取

torch.argmax() 在深度学习中经常用于获取张量沿指定维度上最大值的索引。这在分类任务、生成类别预测或评估模型输出时经常使用。下面是一些例子:

  1. 分类任务中的预测类别获取
    假设有一个模型输出的概率分布张量,形状为 (batch_size, num_classes),其中 num_classes 是类别的数量。我们可以使用 torch.argmax() 获取每个样本预测的类别:
import torch# 模拟模型输出的概率分布
output_probs = torch.tensor([[0.1, 0.6, 0.3],[0.1, 0.2, 0.7]])# 获取每个样本预测的类别索引
predicted_classes = torch.argmax(output_probs, dim=1)print(predicted_classes)

这里 dim=1 表示沿着第二个维度(类别维度)获取最大值的索引。输出将是一个包含每个样本预测类别索引的张量。

输出为:tensor([1, 2])

并且,torch.argmax()中得到的数组的取值范围是和dim维度上的值有关。例如,此处dim=1的维度即为列的维度,列维度上共3列,故最终的tensor取值是0,1,2。或者 torch.Size([1, 21, 500, 928]),的dim=1维度上的大小是21,故最终得到的tensor取值是0-20的范围。

理解:这里得到的概率分布为[0.1, 0.6, 0.3], [0.5, 0.2, 0.3],对于第一个数组概率最大的是0.6,其索引为1。对于第二个数组概率最大的是0.5,索引为0。所以按照dim=1,得到的输出为:tensor([1, 0])

接下来,你可以使用这些预测的类别索引进行一些后续操作,比如:

class_labels = ["Class A", "Class B", "Class C"]predicted_labels = [class_labels[idx] for idx in predicted_classes]
print(predicted_labels)
输出为:['Class B', 'Class C']

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

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

相关文章

qt学习:QListWidget控件+自定义条目项+双击删除+单击获取

目录 图片 头函数 接口 显示案例 方法1 方法2 方法3 方法4 自定义 方法5 在方法4上实现 图片 头函数 #include <QListWidgetItem> 接口 //不怎么常用void addItem(const QString &label)void addItems(const QStringList &labels) //自定义条目项…

Redis客户端之Redisson(二)Redisson分布式锁

一、原理&#xff1a; Redisson并没有通过setNx命令来实现加锁&#xff0c;而是基于 Redis 看⻔狗机制&#xff0c;自己实现了一套分布式锁逻辑。 1、加锁机制&#xff1a; 二、使用方法&#xff1a;

EasyExcel实现下载模板

实体类&#xff1a; package com.aicut.monitor.domain;import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.s…

YOLOv8全网独家首发:Powerful-IoU更好、更快的收敛IoU | 2024年最新IoU

💡💡💡本文独家改进:Powerful-IoU更好、更快的收敛IoU,是一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的损失函数 💡💡💡MS COCO和PASCAL VOC数据集实现涨点 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.htm…

【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性&#xff0c;同时提高性能。本课程基于当前主流版本Oracle 19cOEL7.9解析如何搭建2节点RAC对1节点单机的DATA GU…

数学知识第一期 质数

前言 本文是关于质数的一些内容&#xff0c;希望能够对大家有帮助&#xff01;&#xff01;&#xff01; 一、质数的基本内容 定义&#xff1a; 质数又称素数。一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则…

基于SpringBoot IP黑白名单的实现

业务场景 IP黑白名单是网络安全管理中常见的策略工具&#xff0c;用于控制网络访问权限&#xff0c;根据业务场景的不同&#xff0c;其应用范围广泛&#xff0c;以下是一些典型业务场景&#xff1a; 服务器安全防护&#xff1a; 黑名单&#xff1a;可以用来阻止已知的恶意IP地…

html:thymeleaf实现日期格式转换

thymeleaf内置对象有&#xff1a; #dates&#xff1a;日期格式化内置对象 #numbers:数字格式化 <td th:text"${#dates.format(man.assayTime,yyyy-MM-dd)}"></td>参考以下文章&#xff1a; https://blog.csdn.net/silence1120/article/details/1057904…

Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用

前言 Go语言凭借低占用&#xff0c;高并发等优秀特性成为后台编程语言的新星&#xff0c;GoZero框架由七牛云技术副总裁团队编写&#xff0c;目前已经成为Go微服务框架里star数量最多的框架 本文记录讲述笔者一步步走通前台向后台发出请求&#xff0c;后台api调用rpc服务的相…

VR数字展厅,平面静态跨越到3D立体化时代

近些年&#xff0c;VR的概念被越来越多的人提起&#xff0c;较为常见的形式就是VR数字展厅。VR数字展厅的出现&#xff0c;让各地以及各行业的展厅展馆的呈现和宣传都发生了很大的改变和革新&#xff0c;同时也意味着展览传播的方式不再局限于原来的图文、视频&#xff0c;而是…

js的一些运算符规则

?? 是根据 null 和 undefined 判断的&#xff0c; || 是根据 布尔值 false 判断的, 左侧为true 不看右侧 && 左侧为false 不看右侧 ?. ”可选链操作符“&#xff0c;允许读取位于连接对象链深处的属性的值&#xff0c;而不必明确验证链中的每个引用是否有效。在引…

【Redis】list以及他的应用场景

介绍 &#xff1a;list 即是 链表。链表是一种非常常见的数据结构&#xff0c;特点是易于数据元素的插入和删除并且且可以灵活调整链表长度&#xff0c;但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 LinkedList&#xff0c;但是 C 语言并没有实现…

Spring Boot如何统计一个Bean中方法的调用次数

目录 实现思路 前置条件 实现步骤 首先我们先自定义一个注解 接下来定义一个切面 需要统计方法上使用该注解 测试 实现思路 通过AOP即可实现&#xff0c;通过AOP对Bean进行代理&#xff0c;在每次执行方法前或者后进行几次计数统计。这个主要就是考虑好如何避免并发情况…

JavaScript Proxy 对象、eval函数详解

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ 目录 ✨ 前言 ✨ 正文 Proxy 什么是 Proxy 代理 handlers get 捕获器 se…

Oracle ORA-09925

Error : 30: Read-only file system 造成这个问题的原因大多数是因为非正常关机后导致文件系统受损引起的&#xff0c;在系统重启之后&#xff0c;受损分区就会被Linux自动挂载为只读。 解决办法之一&#xff1a; 重启系统

聚观早报 | 特斯拉公布2023年财报;五菱红1号电池正式发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月26日消息 特斯拉公布2023年财报 五菱红1号电池正式发布 Redmi Note 13 Pro新春版开售 三星Galaxy S24系列发布…

live555搭建流式rtsp服务器

源代码已上传gitee 一、需求 live555源代码中的liveMediaServer是将本地文件作为源文件搭建rtsp服务器&#xff0c;我想用live555封装一个第三方库&#xff0c;接收流数据搭建Rtsp服务器&#xff1b;预想接口如下&#xff1a; class LiveRtspServer { public:/***brief构造一…

HCIA——29HTTP、万维网、HTML、PPP、ICMP;万维网的工作过程;HTTP 的特点HTTP 的报文结构的选择、解答

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

在windows上用python版tensorrt推理

文章目录 尝试一&#xff1a;利用torch导出的pth文件&#xff0c;调用torch2trt来进行trt推理1.1 搭建环境1.2 如何trt推理1.3 遇到的问题 尝试二&#xff1a;把onnx模型转为sim版的onnx模型2.1 搭建onnxim环境2.2 使用 onnxsim 尝试三&#xff1a;把onnx-sim转到trt&#xff0…

Python之代码覆盖率框架coverage使用介绍

Python代码覆盖率工具coverage.py其实是一个第三方的包&#xff0c;同时支持Python2和Python3版本。 安装也非常简单&#xff0c;直接运行&#xff1a; pip install coverage 安装完成后&#xff0c;会在Python环境下的\Scripts下看到coverage.exe&#xff1b; 首先我们编写…