pytorch导入数据集

1、概念:

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

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

(方便模型训练和验证)

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

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

2、Dataset的组织形式

train:训练集 val:验证集

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

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

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

|--------------------------------------|--------------------------------------|
| 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、代码

python 复制代码
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_dir
        self.label_dir=label_dir
        self.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_dir
        return img,label

    def __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
相关推荐
2603_95470831几秒前
微能网协调控制箱突破传统微电网架构瓶颈
大数据·数据库·人工智能·架构·能源
俊哥V4 分钟前
每日 AI 研究简报 · 2026-10-17
人工智能·ai
打工仔折腾 AI10 分钟前
让时序预测真正参与决策:TimechoAI 工程化落地与管线设计实践
人工智能·后端·python·算法·机器学习·性能优化
智圣新创0111 分钟前
教育数字化合规背景下 智圣新创高校一表通建设全国低内耗落地指引
大数据·人工智能
Light6015 分钟前
企业自建 AI 智能体,成本差 8 倍还是 46 倍?
java·人工智能·算法·知识图谱·rag·ai agent 上下文·token 成本
炽橙超真云17 分钟前
「人工智能+制造」五类场景如何确定优先级?四个判断维度与三类场景落地实践
人工智能·ai·工业智能·制造业转型·工业ai
能源革命19 分钟前
AI日报 2026-10-17
人工智能
IT_陈寒27 分钟前
一文搞懂React的核心概念
前端·人工智能·后端
“AI国潮设计-小江”29 分钟前
《【AIGC实战】Python+SDXL批量生成“猫咪英歌舞蛋挞”IP,附保持角色一致性的代码逻辑》
开发语言·人工智能·python·prompt·aigc
艾莉丝努力练剑37 分钟前
【AI大模型接入SDK】ChatServer HTTP接口模块实现总览
网络·c++·人工智能·网络协议·学习·http·架构