2024/9/16 dataloader、tensorboard、transform
一、pytorch两大法宝元素
假设有一个名为pytorch的包
dir():用于打开包,看里面的内容
help():用于查看具体的内容的用处
二、python文件,python控制台和jupyter的使用对比
三、pytorch读取数据
pytorch读取数据主要涉及到两个类:
使用Dataset类读取数据
从pytorch包中引入Dataset类,写一个子类对Dataset进行继承,重写其中方法达到目的
一般会设置数据路径问题,需import os
四、Tensorboard的使用
TensorBoard 是 TensorFlow提供的一组可视化工具
安装tensorboard
1.SummaryWriter类的使用
1.1 add_scalar()方法
def add_scalar(self,tag, # 图像名scalar_value, # y轴global_step=None, # x轴walltime=None,new_style=False,double_precision=False, ):
运行后,出现logs文件夹:
查看该文件:
在终端输入tensorboard --logdir=logs或者tensorboard --logdir PATH
默认生成文件通过6006端口打开,可指定端口打开:tensorboard --logdir=logs --port=6007
点击链接:
注:有时生成文件多了之后,图像出现在一起可能会出现拟合现象,就将所有事件删除后重新生成
1.2 add_image()方法
def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW" ):
tag:标题
img_tensor:图片,此处图片只能是torch.tensor,numpy.array或string 不是这些,要转换成这些
global_step:表明是第几张图片
dataformats:图片的通道,高,宽顺序,默认CHW 可自行指定
五、Transform的使用
通过 from torchvision import transforms 引入transforms模块
torchvision是图像处理库,计算机视觉工具包,transforms 集成了随机翻转、旋转、增强对比度、转化为tensor、转化为图像等功能,用于数据增强。(transforms更多的指的是transforms.py文件,其中包含很多类)。
NumPy是一个功能强大的Python库,主要用于对多维数组执行计算,它极大地简化了向量和矩阵的操作处理。
Tensor,即“张量”。实际上跟numpy数组、向量、矩阵的格式基本一样。但是是专门针对GPU来设计的,可以运行在GPU上来加快计算效率。
在PyTorch中,张量Tensor是最基础的运算单位,与NumPy中的NDArray类似,张量表示的是一个多维矩阵。不同的是,PyTorch中的Tensor可以运行在GPU上,而NumPy的NDArray只能运行在CPU上。由于Tensor能在GPU上运行,因此大大加快了运算速度。
在使用 transforms.ToTensor() 进行图片数据转换过程中会对图像的像素值进行正则化,即一般读取的图片像素值都是8 bit 的二进制,那么它的十进制的范围为 [0, 255],而正则化会对每个像素值除以255,也就是把像素值正则化成 [0.0, 1.0]的范围
详见https://www.cnblogs.com/yq-ydky/p/17617289.html
1.使用ToTensor类将图片数据转化为Tensor类型
2.为什么要使用tensor这一数据类型
tensor这一数据类型包含了很多在神经网络中需要用到内容,比如后向,梯度
对于搭建神经网络更为方便
3.将PIL数据转化为Tensor,利用Tensorboard进行显示
4.常用的transform类
Resize只改变图像大小,不改变其数据类型
compose对象是各种类对象的合成体,要注意的列表中的对象要具有相关性,前一对象的输出是后一个对象的输入
5.transform与数据集的结合使用
torchvision中可以找到一些常用数据集,常用模型:
torchvision — Torchvision 0.19 documentation
torchvision.datasets中包含许多数据集,可直接设置参数使用命令下载
例子:CIFAR10
CIFAR10 — Torchvision 0.19 documentation
(1)下载数据:
数据集中的每一个数据都是一个由图片和对应的类别标签索引组成的元组
(2)原始图片为PIL类型,添加一些transform操作:
(3)利用tensorboard对图像进行显示
六、dataloader介绍
参考:torch.utils.data — PyTorch 2.4 documentation
使用dataset获取数据集时,返回的数据集中每一个数据都是一个由图片和标签组成的元组
CIFAR10中的图片维度(3,32,32)
dataloader负责按照想要的方式从数据集中得到数据
(1)将batch设置为4,每页4个,分多页
(2)将batch设置为64,每页64个,分多页,epoch表示遍历完一遍数据
注:指定了数据集会读取该数据集所有数据,batch只是将数据分批次
format()的使用:
Python字符串格式化之使用format()方法_python_脚本之家