b站小土堆pytorch学习记录——P9-P10 transforms的使用

2024-03-02 15:36

本文主要是介绍b站小土堆pytorch学习记录——P9-P10 transforms的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、前置知识
    • 1.torchvision简要介绍
    • 2.transforms简要介绍
  • 二、代码

一、前置知识

1.torchvision简要介绍

torchvision 是 PyTorch 提供的一个专门针对计算机视觉任务的软件包,它为用户提供了一系列用于处理图像和视频数据的工具和实用函数。
torchvision 包含了许多常用的数据集、模型架构、图像转换类以及实用函数,方便用户进行图像处理和计算机视觉任务的开发和研究。

torchvision 主要功能:

数据集:提供了常用的图像数据集,如MNIST、CIFAR-10、ImageNet 等,方便用户下载和加载这些数据集进行训练和测试。
模型:包含了预训练的深度学习模型,如 ResNet、VGG、AlexNet 等,用户可以直接使用这些模型进行迁移学习或微调。
图像转换:提供了一系列用于数据增强和预处理的函数和类,如对图像进行裁剪、缩放、旋转、归一化等操作。
工具函数:提供了一些实用的函数,如计算图像均值和标准差、可视化图像、计算特征图大小等。

2.transforms简要介绍

在PyTorch中,transforms是一个用于 数据预处理和数据增强 的重要模块,主要包含了各种对图像、文本、音频等数据进行处理的函数和类。transforms模块可以帮助用户方便地对数据进行各种转换操作,以满足神经网络训练的需求。

transforms模块中常用的函数和类:
ToTensor: 将PIL图像或numpy数组转换为PyTorch张量。
Normalize: 标准化图像数据。
Resize: 调整图像大小。
RandomCrop: 随机裁剪图像。
RandomHorizontalFlip: 随机水平翻转图像。
Compose: 将多个转换组合在一起。

二、代码

from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriterimg_path = "data/train/ants_image/0013035.jpg"
# 使用PIL的Image模块中的open函数打开指定路径的图像文件,将其加载为一个PIL图像对象
img = Image.open(img_path)writer = SummaryWriter("logs")# 创建一个transforms对象
tensor_trans = transforms.ToTensor()
# 调用ToTensor()函数,将PIL图像对象img转换为PyTorch的tensor格式,并将结果保存在tensor_img变量中
tensor_img = tensor_trans(img)writer.add_image("Tensor_img", tensor_img)print(tensor_img)

运行结果:

		tensor([[[0.3137, 0.3137, 0.3137,  ..., 0.3176, 0.3098, 0.2980],[0.3176, 0.3176, 0.3176,  ..., 0.3176, 0.3098, 0.2980],[0.3216, 0.3216, 0.3216,  ..., 0.3137, 0.3098, 0.3020],...,[0.3412, 0.3412, 0.3373,  ..., 0.1725, 0.3725, 0.3529],[0.3412, 0.3412, 0.3373,  ..., 0.3294, 0.3529, 0.3294],[0.3412, 0.3412, 0.3373,  ..., 0.3098, 0.3059, 0.3294]],[[0.5922, 0.5922, 0.5922,  ..., 0.5961, 0.5882, 0.5765],[0.5961, 0.5961, 0.5961,  ..., 0.5961, 0.5882, 0.5765],[0.6000, 0.6000, 0.6000,  ..., 0.5922, 0.5882, 0.5804],...,[0.6275, 0.6275, 0.6235,  ..., 0.3608, 0.6196, 0.6157],[0.6275, 0.6275, 0.6235,  ..., 0.5765, 0.6275, 0.5961],[0.6275, 0.6275, 0.6235,  ..., 0.6275, 0.6235, 0.6314]],[[0.9137, 0.9137, 0.9137,  ..., 0.9176, 0.9098, 0.8980],[0.9176, 0.9176, 0.9176,  ..., 0.9176, 0.9098, 0.8980],[0.9216, 0.9216, 0.9216,  ..., 0.9137, 0.9098, 0.9020],...,[0.9294, 0.9294, 0.9255,  ..., 0.5529, 0.9216, 0.8941],[0.9294, 0.9294, 0.9255,  ..., 0.8863, 1.0000, 0.9137],[0.9294, 0.9294, 0.9255,  ..., 0.9490, 0.9804, 0.9137]]])

在终端运行 tensorboard --logdir=logs后,打开tensorboard,显示的结果如下:

在这里插入图片描述

tensor到底是什么?
借用小土堆的一个很形象的图:

在这里插入图片描述

这篇关于b站小土堆pytorch学习记录——P9-P10 transforms的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/766603

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完