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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他