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

相关文章

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命