深度学习(6):Dataset 和 DataLoader

news/2024/9/28 16:20:14/

文章目录

  • Dataset 类
  • DataLoader 类

Dataset 类

概念:

  • Dataset 是一个抽象类,用于表示数据集。它定义了如何获取数据集中的单个样本和标签。

作用:

  • 为数据集提供统一的接口,便于数据的读取、预处理和管理。

关键方法:

  • __len__(self): 返回数据集的大小(样本数量)。
  • __getitem__(self, index): 根据索引 index 返回对应的样本和标签。

自定义 Dataset:

需要继承 torch.utils.data.Dataset并实现上述两个方法。

示例(PyTorch):

import torch
from torch.utils.data import Datasetclass Dataset(Dataset):def __init__(self, datas, labels):self.datas = datas # 数据文件路径列表self.labels = labels # 标签列表def __len__(self):return len(self.data)def __getitem__(self, idx):# 加载数据,例如读取图像文件data = self.data[idx]label = self.labels[idx]# 一系列的处理return data, label

DataLoader 类

概念:

  • DataLoader 是一个数据迭代器,用于包装 Dataset,以便于批量(batch)加载数据。

作用:

  • 提供批量数据、数据打乱(shuffle)、并行加载(多线程/多进程)等功能,提高数据加载的效率。

关键参数:

  • dataset: 要加载的数据集(Dataset 实例)。
  • batch_size: 每个批次的样本数量。
  • shuffle: 是否在每个 epoch 开始时打乱数据。
  • num_workers: 使用多少子进程来加载数据(0 表示不使用多进程)。
  • collate_fn: 指定如何将一批样本组合成一个批次。

工作流程:

  • Dataset 中按索引取出样本。
  • 使用 collate_fn 将多个样本组合成一个批次。
  • 迭代返回批量数据供模型训练或评估。

示例(PyTorch):

from torch.utils.data import DataLoader# 创建 Dataset 实例
dataset = MyDataset(datas, labels)# 创建 DataLoader 实例
dataloader = DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4)


http://www.ppmy.cn/news/1530833.html

相关文章

Linux部署python web项目Flask + gunicorn + nginx

文章目录 一、安装python&使用虚拟环境二、python程序重要参数加密2.1 非对称加密(RSA)2.2 生成密钥对2.4 以连接数据库参数加密为例2.4.1 工具类RSA.py 三、一个简单的Flask项目四、安装配置gunicorn4.1 安装4.2 启动/配置(选择eventlet)4.2.1 命令…

网络爬虫到底难在哪里?

如果你是自己做爬虫脚本开发,那确实难,因为你需要掌握Python、HTML、JS、xpath、database等技术,而且还要处理反爬、动态网页、逆向等情况,不然压根不知道怎么去写代码,这些技术和经验储备起码得要个三五年。 比如这几…

中国蚁剑(antSword)安装使用

antSword下载 antSword-Loader下载 作者:程序那点事儿 日期:2024/09/12 19:35 中国蚁剑(AntSword)是一款跨平台的开源网站管理工具,旨在满足渗透测试人员的需求。它是一个功能强大的工具,可以帮助用户管理…

python sqlite3数据库介绍(如何使用参数化查询防止SQL注入攻击)(直接通过网络让其他主机访问某台主机上的SQLite数据库是不被直接支持的)

文章目录 使用 Python 操作 SQLite 数据库1. 连接到 SQLite 数据库2. 创建表3. 插入数据4. 查询数据5. 关闭连接 安全性和最佳实践使用参数化查询:防止 SQL 注入攻击。如何工作Python 示例好处 关闭连接:在数据库操作完成后确保关闭连接。异常处理&#…

用 CSS 动画记录宝宝0-280天的变化

用 CSS 动画记录宝宝0-280天的变化 用动画记录宝宝从0-280天在肚子里的变化~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1…

了解云计算工作负载保护的重要性,确保数据和应用程序安全

云计算de小白 云计算技术的快速发展使数据和应用程序安全成为一种关键需求&#xff0c;而不仅仅是一种偏好。随着越来越多的客户公司将业务迁移到云端&#xff0c;保护他们的云工作负载&#xff08;指所有部署的应用程序和服务&#xff09;变得越来越重要。云工作负载保护&…

【github remote: Access denied等问题的通用解决方案】

第一步 查看Git所有配置&#xff08;杂七杂八的啥都有&#xff0c;看看即可&#xff09; $ git config --list 删除全部配置文件&#xff1a; $ git config --global --edit 然后输入 i&#xff0c;进行删除&#xff08;git bash中需右键复制剪贴&#xff09; 然后按esc进入命…

Python类里引用其他类

Python类里引用其他类 引言 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;使用类的组合与继承是一种常见的设计模式。通过一个类引用另一个类&#xff0c;可以实现更复杂和灵活的功能&#xff0c;使得代码更加模块化和可重用。本文将介绍如何在Python中创建多个类…