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) 处理特殊情况下的数据载入需求。

相关推荐
奔跑的犀牛先生1 分钟前
【小白学机器学习36】关于独立概率,联合概率,交叉概率,交叉概率和,总概率等 概念辨析的例子
人工智能·机器学习·概率论
java_python源码6 分钟前
[含文档+PPT+源码等]精品大数据项目-Django基于大数据实现的游戏用户行为分析与个性化推荐系统
python·游戏
AI浩11 分钟前
上下文信息、全局信息、局部信息
人工智能·transformer
Srlua14 分钟前
周期性移动模式地铁乘客流量预测
python·数据分析
易辰君16 分钟前
【Python爬虫实战】深入解析 Scrapy:从阻塞与非阻塞到高效爬取的实战指南
开发语言·python
Elastic 中国社区官方博客22 分钟前
Elasticsearch:Retrievers 介绍
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
python收藏家31 分钟前
如何在Python中进行数学建模?
python
&黄昏的乐师1 小时前
Opencv+ROS实现颜色识别应用
人工智能·opencv·学习·计算机视觉
小馒头学python1 小时前
深度学习中的卷积神经网络:原理、结构与应用
人工智能·深度学习·cnn
2zcode1 小时前
基于YOLOv8深度学习的脑肿瘤智能检测系统设计与实现(PyQt5界面+数据集+训练代码)
人工智能·深度学习·yolo