PIL+pyplot+transforms.ToTensor+unsqueeze+div

news2024/12/29 11:19:02

目录

  • PIL & pyplot
    • transforms.ToTensor
  • torch.unsqueeze(input,dim,out=None)
  • torch.squeeze(input, dim=None, out=None)
  • torch.div

PIL & pyplot

from PIL import Image
import matplotlib.pyplot as plt
from torchvision import transforms

# PIL打开图片
img_PIL = Image.open("data/style/cat.jpg")
print(img_PIL)
print(type(img_PIL))
# img_PIL.show()  # 调用os system自带的browser来显示图片
# plt.imshow(img_PIL)
# plt.show()

# plt打开图片
img_plt = plt.imread("data/style/cat.jpg")
print(img_plt.shape)
print(type(img_plt))
# plt.imshow(img_plt)
# plt.show()

在这里插入图片描述
可以看到plt打开的图片格式为 HxWxC 且数据类型为numpy.ndarray,并不是张量形式,所以 plt 打开的图片也要用transforms.ToTensor 来转化为张量。

因为PIL打开的图片并不是张量的形式,所以需要transforms.ToTensor()来转换为张量

transforms.ToTensor

convert a PIL Image or numpy.ndarray to tensor

Converts a PIL Image or numpy.ndarray (H x W x C) in the range [0, 255] to a torch.FloatTensor of shape (C x H x W) in the range [0.0, 1.0]

pytorch官网

# PIL打开图片
img_PIL = Image.open("data/style/cat.jpg")
img_PIL = transforms.ToTensor()(img_PIL)
print(img_PIL.shape)
# output:torch.Size([3, 940, 940])

# plt打开图片
img_plt = plt.imread("data/style/cat.jpg")
img_plt = transforms.ToTensor()(img_plt)
print(img_plt.shape)  # torch.Size([3, 940, 940])
print(type(img_plt))  # <class 'torch.Tensor'>

输出为 ( C × H × W ) (C \times H\times W) (C×H×W)

或者用transforms.Compose打包transforms.ToTensor()

transform = transforms.Compose([transforms.ToTensor()])

# PIL打开图片
img_PIL = Image.open("data/style/cat.jpg")
img_PIL = transform(img_PIL)
print(img_PIL.shape)
# output:torch.Size([3, 940, 940])

torch.unsqueeze(input,dim,out=None)

官网torch.unsqueeze

在指定位置添加维度

# plt打开图片
img_plt = plt.imread("data/style/cat.jpg")
img_plt = transform(img_plt)
print(img_plt.shape)
print(type(img_plt))

# 在指定的维度上插入1维
img_plt = img_plt.unsqueeze(2)
print(img_plt.shape)
print(type(img_plt))

在这里插入图片描述
通常的使用方法是img = transform(img).unsqueeze(0)

transform = transforms.Compose([transforms.ToTensor()])
# plt打开图片
img_plt = plt.imread("data/style/cat.jpg")
print(img_PIL.shape)
print(type(img_PIL))
# img_plt = transforms.ToTensor()(img_plt)
img_plt = transform(img_plt)

img_plt = img_plt.unsqueeze(0)

print(img_plt.shape)
print(type(img_plt))

在这里插入图片描述
unsqueeze(0)就是在最外层增加了一个维度。

unqueeze()这个函数主要是对数据维度进行扩充, 起到升维的作用,方便后续图像处理可以更好地批处理。这是应该是因为网络的接收输入是一个mini-batch,image unsqueeze后第一个维度是留给batch_size的

torch.squeeze(input, dim=None, out=None)

去除那些维度大小为1的维度

不传入dim时,则删除所有大小为1的维度

import torch
b = torch.tensor([[[[1],[2]]],[[[3],[4]]]])
print(b)
print(b.size(),b.squeeze().size())
print(b.squeeze())

在这里插入图片描述

传入dim时,仅在给定尺寸中进行挤压操作

x = torch.zeros(2, 1, 2, 1, 2)

# dim0的维度为2,所以挤压后不变,
# squeeze(0)表示如果dim0的维度为1则删除dim0
print(x.size(),x.squeeze(0).size())

print(x.size(),x.squeeze(1).size(),x.squeeze(1).size())

# 不影响x的原来的形状
print(x.shape)

在这里插入图片描述
参考博客
参考博客

torch.div

张量和标量做逐元素除法
或者两个可广播的张量之间做逐元素除法
在这里插入图片描述

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

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

相关文章

面试华为必备:华为18级技术官呕心沥血三年整理的 趣谈网络协议

华为是一个热门的互联网大厂&#xff0c;华为每年都要进很多新人&#xff0c;对于新人来说&#xff0c;那些高大上的技术是用不到的&#xff0c;反倒是非常需要这些基础的文档&#xff0c;有这些新手进步会快很多&#xff0c;搞清楚TCP IP协议栈&#xff0c;其他的学起来也就容…

运动规划问答 -路径规划

1、Dijstra算法&#xff0c;算法流程 关键 初始化&#xff1a; 算法是基于图搜索的思想&#xff0c;所以需要先构建一个图&#xff0c;图中不包含障碍物&#xff0c;读入起点和终点信息&#xff0c;设置一个以代价作为键值排序的multiMap&#xff0c;起点入队&#xff0c;并设…

搜索技术——遗传算法

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 一&#xff1a;进化与遗传的概念 拉马克(Lamarck)进化论&#xff1a; 一切物种都是其他物种演变和进化而来的&#xff0c;而生物的演变和进化是一个缓慢和连续的过程环境的变化能够引起生…

Qwt开发笔记(一):Qwt简介、下载以及基础demo工程模板

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/128146985 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

设计模式之观察者模式(十四)

目录 1. 背景 1.1 天气预报项目 2. 观察者模式 2.1 观察者模式解决天气预报项目 2.2 观察者模式在JDK中应用 1. 背景 1.1 天气预报项目 天气预报项目需求,具体要求如下&#xff1a; 气象站可以将每天测量到的温度&#xff0c;湿度&#xff0c;气压等等以公告的形式发布出去…

ASEMI整流桥KBL406参数,KBL406规格,KBL406封装

编辑-Z ASEMI整流桥KBL406参数&#xff1a; 型号&#xff1a;KBL406 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;600V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;420V 最大直流阻断电压&#xff08;VDC&#xff09;&#xff1a;600…

完全免费、开源的Flutter架构来了;开发者做好准备了吗?

Flutter 是谷歌的移动 UI 框架&#xff0c;可以快速在 iOS 和 Android 上构建高质量的原生用户界面 一份代码可以同时生成 iOS 和 Android 两个高性能、高保真的应用程序 Flutter 目标就是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序&#xff0c;并且兼容 滚…

萤火虫模糊回归算法(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

FA-Phe-Gly-Gly,64967-39-1

Substrate for a continuous spectrophotometric assay of human angiotensin I-converting enzyme (ACE). Enzymatic cleavage of FAPGG yields FA-Phe-OH and H-Gly-Gly-OH. 连续分光光度法测定人血管紧张素i转换酶(ACE)的底物。酶法裂解FAPGG产生fa - pheo - oh和H-Gly-Gly-…

Kamiya丨Kamiya艾美捷抗-C-Myc,多克隆说明书

Kamiya艾美捷抗-C-Myc&#xff0c;多克隆化学性质&#xff1a; 程序&#xff1a;鸡用C-Myc免疫与KLH缀合的肽。多次之后用弗氏佐剂免疫收集。使用固定在固体上的肽对抗体进行免疫亲和纯化阶段 规范&#xff1a; ELISA&#xff1a;抗体特异性通过针对与BSA缀合的肽的ELISA。A…

在微信小程序里引入Vant Weapp组件库详细步骤

1. 新建一个文件夹。 2. 使用微信开发者工具 选择一个模板(这里以javaScript 基础模板 为例) 选择完模板之后如下&#xff1a; 2. 右键打开终端&#xff1a;按如下步骤执行命令。 ① npm init 解释&#xff1a;执行 npm init 需要在当前文件夹下的DOS窗口执行或者VS code里面…

Springboot策略模式实现文件上传功能(Windows/Linux本地,oss,cos)

1&#xff1a;首先配置pom依赖&#xff1a; <!-- 阿里云oss--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.0</version></dependency><!-- 腾讯云cos-->…

Raspberry Pi 3 Model B+ (树莓派3B+)快速上手

文章目录一、硬件资源二、供电三、引脚说明四、Raspberry Pi OS1. 下载imager2. 选择操作系统3. 选择SD卡4. 烧写完成5. 启动6. 版本信息五、网络测试1. WiFi2. 以太网六、开启串口日志1. 硬件串口连接2. 修改config.txt配置3. 修改cmdline4. 测试一、硬件资源 下面是硬件资源图…

架构-三层架构:三层架构

概述 顾名思义&#xff0c;三层架构分为三层&#xff0c;分别是“数据访问层”、“业务逻辑层”、“表示层”。 数据访问层&#xff1a;数据访问层在作业过程中访问数据系统中的文件&#xff0c; 实现对数据库中数据的读取保存操作。 表示层&#xff1a;主要功能是 显示数据和…

李宁「向上」:不止缺一个FILA

文|螳螂观察 作者|易不二 随着卡塔尔世界杯拉开战幕&#xff0c;今年年初大幅下跌的阿迪和耐克&#xff0c;正在借助世界杯大放异彩。 据统计&#xff0c;在2022年的32强世界杯球衣中&#xff0c;耐克、阿迪、彪马三家品牌共包揽了80%。世界杯球衣是出镜率最高的广告载体&am…

Android基础之Fragment

目录前言一、Fragment简介二、Fragment的基础使用1.创建Fragment2.在Activity中加入Fragment&#xff08;1&#xff09;在Activity的layout.xml布局文件中静态添加&#xff08;2&#xff09;在Activity的.java文件中动态添加三、Fragment的基础实践应用1.应用过程详解2.代码总览…

Java JDK下载与安装教程

文章目录Java JDK 简介下载 JDK安装 JDKJava JDK 简介 JDK是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心&#xff0c;它包含了JAVA的运行环境&#xff08;JVMJava系统类库&#xff09;和JAVA工具。 万事开…

Flink系列文档-(YY11)-watermark工作机制

1 WaterMark生成工作机制 观察源码 /*** A WatermarkGenerator for situations where records are out of order, but you can place an upper* bound on how far the events are out of order. An out-of-order bound B means that once an event* with timestamp T was encou…

[附源码]Python计算机毕业设计SSM酒店管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

alertmanager 基于webhook-adapter插件实现企业微信机器人提醒服务

前言 Alertmanager处理客户端应用程序&#xff08;例如 Prometheus 服务器&#xff09;发送的警报。它负责删除重复数据、分组并将它们路由到正确的接收器集成&#xff0c;例如电子邮件、PagerDuty 或 OpsGenie。它还负责警报的静音和抑制。 前提要求 安装docker&#xff0c;…