pytorch 数据载入

在PyTorch中,数据载入是训练深度学习模型的重要一环。

本文将介绍三种常用的数据载入方式:Dataset、DataLoader、以及自定义的数据加载器。

  1. 使用 Dataset 载入数据
    方法:

    from torch.utils.data import Dataset

    class CustomDataset(Dataset):
    def init(self, ...):
    # 初始化数据集
    # ...

    复制代码
     def __len__(self):
         # 返回数据集的大小
         return len(self.data)
    
     def __getitem__(self, idx):
         # 根据索引返回样本和标签
         return self.data[idx], self.labels[idx]

使用示例:

复制代码
custom_dataset = CustomDataset(...)
  1. 使用 DataLoader 加载数据集
    方法:

    from torch.utils.data import DataLoader

    data_loader = DataLoader(
    dataset,
    batch_size=32,
    shuffle=True,
    num_workers=4,
    drop_last=True,
    )

参数说明:

dataset: 要加载的数据集对象。

batch_size: 每个批次的样本数量。

shuffle: 是否在每个 epoch 开始时打乱数据。

num_workers: 用于数据加载的进程数。

drop_last: 是否丢弃最后一个不完整的批次。

使用示例:

复制代码
for data, labels in data_loader:
    # 训练模型的逻辑
  1. 使用自定义的 Data Loader
    方法:

    from torch.utils.data import DataLoader, IterableDataset

    class CustomDataLoader(IterableDataset):
    def init(self, ...):
    # 初始化数据加载器
    # ...

    复制代码
     def __iter__(self):
         # 返回一个迭代器
         return iter(self.data)

使用示例:

复制代码
custom_loader = CustomDataLoader(...)
for data in custom_loader:
    # 自定义数据处理逻辑

注意事项:

Dataset 和 DataLoader 是 PyTorch 提供的数据载入工具,通常能满足大多数情况。

自定义数据加载器 (IterableDataset) 可以用于特殊情况下的数据加载需求。

总结:

使用 Dataset 创建数据集对象,实现 lengetitem 方法。

使用 DataLoader 加载数据集,设置参数如 batch_size、shuffle 等。

可选地,使用自定义的数据加载器 (IterableDataset) 处理特殊情况下的数据载入需求。

相关推荐
TTGGGFF6 小时前
机器视觉:智能车大赛视觉组技术文档——用 YOLO3 Nano 实现目标检测并部署到 OpenART
人工智能·目标检测·计算机视觉
是梦终空6 小时前
计算机毕业设计240—基于python+爬虫+html的微博舆情数据可视化系统(源代码+数据库)
爬虫·python·pandas·课程设计·毕业论文·计算机毕业设计·微博舆情可视化
CodeJourney.6 小时前
Python开发可视化音乐播放器教程(附代码)
数据库·人工智能·python
强德亨上校6 小时前
神经网络详解
人工智能·深度学习·神经网络
视***间7 小时前
275TOPS算力边缘计算盒子的价值洞察与市场定位---视程空间
人工智能·边缘计算
AI模块工坊7 小时前
AAAI 2025 | 即插即用,川大Mesorch刷新SOTA,用「介观」Transformer架构终结图像造假
人工智能·深度学习·计算机视觉·架构·transformer
周杰伦_Jay7 小时前
【OpenManus深度解析】MetaGPT团队打造的开源AI智能体框架,打破Manus闭源壁垒。包括架构分层、关键技术特点等内容
人工智能·深度学习·opencv·架构·开源
爱学习的小鱼gogo7 小时前
pyhton 螺旋矩阵(指针-矩阵-中等)含源码(二十六)
python·算法·矩阵·指针·经验·二维数组·逆序
文火冰糖的硅基工坊7 小时前
[嵌入式系统-146]:五次工业革命对应的机器人形态的演进、主要功能的演进以及操作系统的演进
前端·网络·人工智能·嵌入式硬件·机器人
猫头虎7 小时前
openAI发布的AI浏览器:什么是Atlas?(含 ChatGPT 浏览功能)macOS 离线下载安装Atlas完整教程
人工智能·macos·chatgpt·langchain·prompt·aigc·agi