【小土堆】PyTorch深度学习学习笔记

ops/2024/10/9 12:37:39/

1.PyTorch中的DataSet类

因为在up主这里讲了DataSet类的基本使用,那我就想去把DataSet具体学习一下在会过来看up住的内容。

在开发Pytorch项目的时候,项目代码会被分为数据处理模块、模型构建模块、训练模块。其中的数据处理模块的主要任务是构建数据集,而DataSet类就是为了我们方便构建数据集的。而我们的数据集就是一组{x:y}的集合,也就是训练数据和标签,那么我们在使用DataSet类的时候只需要定义好这里的训练数据和标签即可。
我们在编写自己的DataSet类的时候,需要继承DataSet类,并且继承其中的__getitem__() 和 __len__()方法。其中:

  • __getitem__():获取样本对,就是获得对应的数据和标签。
  • __len()__():得到数据集的长度。
    后面用up主的代码来说明:
from torch.utils.data import Dataset
from PIL import Image
import osclass MyData(Dataset): # 继承def __init__(self, root_dir, label_dir): # 初始化self.root_dir = root_dirself.label_dir = label_dirself.path = os.path.join(self.root_dir, self.label_dir)self.img_path = os.listdir(self.path)def __getitem__(self, idx): # 通过索引获取图片img_name = self.img_path[idx]img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)img = Image.open(img_item_path)label = self.label_dirreturn img, labeldef __len__(self):return len(self.img_path)root_dir = "dataset/train"
ants_label_dir = "ants"
ants_dataset=MyData(root_dir,ants_lable_dir)
img,lable=ants_dataset[0]
img.show()
  • 在__init__()函数中,我们进行了一些初始化,其中root_dir表示的是数据集的路径,label_dir表示的是标签集的路径,这里的img_path是一个列表,包含了self.path中的条目的名称。
  • 在__getitem__()函数是在数据加载的时候被调用的,根据传入的索引idx来获取需要加载的数据,这里返回了数据和标签。这里使用了os库里的path中的join方法,这是让两个路径合并在一起,这样避免了系统复制的路径出现问题(win中需要加一个‘\‘)。
  • listdir:listdir函数会返回一个列表,其中包含由path指定的目录中的条目的名称。listdir传递的参数必须是绝对路径

http://www.ppmy.cn/ops/123184.html

相关文章

wsl(2) -- ubuntu24.04配置

1. 常用脚本及别名配置 修改的文件内容参考另一篇文章常用bash脚本。 修改~/.bashrc,在文件末尾追加以下内容。 # Add by user export MYTOOLS$HOME/tools export MYBINS$HOME/bins # 系统中其他地方已经添加过了,暂不清楚是哪里添加的 #export PATH$…

Java后端基础练习|请求参数

请求参数,可以通过四种方式传递到后端 请求路径查询参数请求体请求头 controller代码 package com.urfread.breaknews.core.controller;import com.urfread.breaknews.core.common.model.ResultData; import lombok.Data; import org.springframework.web.bind.a…

通信工程学习:什么是RIP路由信息协议

RIP:路由信息协议 RIP(Routing Information Protocol)路由信息协议是一种基于距离矢量算法的内部网关协议(IGP),主要用于在自治系统(AS)内部进行路由信息的交换和传播。以下是关于RI…

【Linux:线程控制】

目录 线程的创建与等待: ​编辑 代码中tid是什么? 如何看待线程函数传参? ​编辑 ​编辑创建多线程:​编辑 终止多线程: 线程分离: 线程封装: 线程的创建与等待: void *thre…

Java API接口开发规范

文章目录 一、命名规范1.1 接口命名1.2 变量命名 二、接收参数规范2.1 请求体(Body)2.2 查询参数(Query Parameters) 三、参数检验四、接收方式规范五、异常类处理六、统一返回格式的定义七、API接口的幂等性(Idempote…

基于SpringBoot+Vue+MySQL的智能垃圾分类系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着城市化进程的加速,垃圾问题日益凸显,不仅对环境造成污染,也给城市管理带来了巨大挑战。传统的垃圾分类方式不仅费时费力,而且手工操作容易出现错误,导致垃圾分类效…

Vscode、小皮面板安装

Vscode下载官网:Visual Studio Code - Code Editing. Redefined 小皮面板官网:小皮面板-好用、安全、稳定的Linux服务器面板! (xp.cn) 一、进入vscode官网下载 后面就是一通无脑下一步下一步 安装好后的界面如下图 二、下载小皮&#xff0…

一键生成PPT的AI工具-Kimi!

一键生成PPT的AI工具-Kimi! 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 😀大家好!我是向阳🌞,一个想成为优秀全栈开发工程师的有志青年! 📔今天不来讨论前后…