当前位置: 首页 > news >正文

pytorch导入数据集

1、概念:

Dataset:一种数据结构,存储数据及其标签

Dataloader:一种工具,可以将Dataset里的数据分批、打乱、批量加载并进行迭代等

(方便模型训练和验证)

Dataset就像一个大书架,存放着带有标签的数据书籍,并且这些书有编号(0,1,2...);

而Dataloader就像一个图书管理员,负责从书架上按需取出书籍并分批提供给读者。

2、Dataset的组织形式

train:训练集  val:验证集

一种方式是label作为数据文件夹的名字,

另一种方式是label和数据本身分开成两个文件夹(label文件夹里装的是和每个数据对应的.txt)

3、处理图像:PIL(Python Imaging Library)

pip install Pillow安装PIL
from PIL import Image

引入Image类(代表图像对象,

可以通过创建Image实例来操作图像)

img=Image.open('图像路径') 打开图像img.show() 显示图像
print(img.size) 输出(宽度,高度)

print(img.format)

输出图像格式(JPEG、PNG等)

resized_img=img.resize((宽度,高度)) 调整大小
resized_img=img.save('新路径') 保存为新文件

4、处理目录和文件:os

import os
cur_dir=os.getcwd()获取当前工作目录
files=os.listdir(cur_dir)列举当前目录下的所有子目录(文件和文件夹)
os.makedirs('new_folder')创建新文件夹(如果不存在)
os.remove('file.txt')删除文件(os.rmdir('empty_folder')删除空文件夹)
os.path.exists('some_path')检查路径是否存在
file_path=os.path.join('folder','file.txt')拼接路径
abs_path=os.path.abspath('file.txt)获取文件的绝对路径

5、代码

from torch.utils.data import Dataset #从torch的常用工具箱utils中拿data工具,然后引入Dataset类
from PIL import Image #处理图片要用到
import os #访问目录、获取图片的地址要用到class MyData(Dataset): #让MyData类继承Dataset类def __init__(self,root_dir,label_dir): #数据集的初始化:要用到根目录和标签目录(这里把label作为数据文件夹的名字了)self.root_dir=root_dirself.label_dir=label_dirself.path=os.path.join(self.root_dir,self.label_dir) #根目录+标签目录=数据集的路径self.img_dir_list=os.listdir(self.path) #列举数据集目录下的每个数据(文件)def __getitem__(self,idx): #获取索引对应的数据img_dir=self.img_dir_list[idx] #得到索引对应的数据文件img_path=os.path.join(self.root_dir,self.label_dir,img_dir) #数据集路径+数据文件=数据文件路径img=Image.open(img_path)label=self.label_dirreturn img,labeldef __len__(self):return len(self.img_dir_list) #数据长度=数据集目录下的子文件数量root_dir=r"dataset/hymenoptera_data/train"
ants_label_dir="ants"
ants_dataset=MyData(root_dir,ants_label_dir)
bees_label_dir="bees"
bees_dataset=MyData(root_dir,bees_label_dir)train_dataset=ants_dataset+bees_dataset


http://www.mrgr.cn/news/44762.html

相关文章:

  • 操作系统 | 学习笔记 | 王道 | 4.3 文件系统
  • 解决ERR_PROXY_CONNECTION_FAILED
  • 网络编程面试题
  • 哈希表_存在重复元素|、存在重复元素||_C++
  • C++游戏开发:探索与挑战
  • Java中的标识符和关键字
  • 小红书引流的4大方法
  • 【Codeforces】CF 2014 G
  • 感知机学习算法
  • 手机一键换IP地址软件:功能、应用与选择指南‌
  • 基于SpringBoot+Vue+MySQL的药品信息管理系统
  • C语言文件操作(上)(27)
  • python的字典介绍
  • Leetcode 3310. Remove Methods From Project
  • JavaScript(JS)基础(一)
  • 算法题总结(十)——二叉树上
  • 货仓选址(贪心)
  • 制作U盘启动盘1 — UltraISO
  • 操作系统实验之内存管理
  • 分享一个我开发的操作系统镜像下载站