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

`Dataset` 类中 `__len__` 和 `__getitem__` 方法的具体作用

__len____getitem__ 是 PyTorch torch.utils.data.Dataset 抽象类要求必须实现的两个方法,是 PyTorch 数据加载体系的「基石」——

  • __len__ 回答:数据集一共有多少个样本?
  • __getitem__ 回答:给定一个索引 idx,如何获取对应的单个样本?

这两个方法配合 DataLoader,就能实现批量加载、打乱、多线程读取等功能,是 PyTorch 处理数据的标准范式。

__len__ 方法:返回数据集的总样本数

  • 告诉 DataLoader「这个数据集有多少个样本」,是 DataLoader 计算批次、判断迭代终止的依据;

  • 支持 Python 内置的 len() 函数:执行 len(dataset) 时,本质就是调用 dataset.__len__()

  • self.data 是你在 __init__ 中构造的时序样本列表(每个元素是 (x, y) 样本对);

    len(self.data) 就是数据集的总样本数,比如你生成的仿真数据最终构造了 1899 个样本,__len__ 就返回 1899;

  • 实际用途DataLoader 会用这个数值计算「一个 epoch 要迭代多少个批次」(总样本数 / 批次大小),比如总样本 1899、批次 32,一个 epoch 就迭代 59 批(1899//32=59,最后一批不足 32 个)。

__getitem__ 方法:根据索引获取单个样本

  • 是数据集的「样本读取接口」:给定索引 idx,返回对应的单个样本(输入 + 标签);

  • DataLoader 批量加载数据时,本质是循环调用 __getitem__(idx) 获取单个样本,再堆叠成批次(batch);

  • 支持 Python 下标访问:执行 dataset[0] 时,本质就是调用 dataset.__getitem__(0)

  • idx:是 DataLoader 传入的索引(0、1、2... 直到 len(dataset)-1);

  • self.data[idx]:取出第 idx 个时序样本(比如 idx=0 时,取出第一个 (x, y) 对,x 是 50 步 ×3 特征的历史数据,y 是对应的预测目标);

  • 转换为张量并移到指定设备:将 numpy 数组转为 PyTorch 张量,适配模型训练;

  • 返回值:必须是「输入张量 + 标签张量」的格式,是模型训练时的基本数据单元。

    总结

    方法 核心作用 实际用途 缺失后果
    __len__ 返回数据集总样本数 DataLoader 计算批次、支持 len (dataset) 无法计算迭代次数、len () 报错
    __getitem__ 根据索引返回单个样本(输入 + 标签) DataLoader 批量加载样本、支持 dataset [idx] 无法获取样本、训练直接中断

    简单来说:

    • __len__ 定义了数据集的「规模」,__getitem__ 定义了数据集的「读取规则」;
    • 这两个方法是 PyTorch 数据加载的「最小实现要求」,所有自定义 Dataset 都必须实现它们,才能和 DataLoader 配合完成批量训练。
http://www.jsqmd.com/news/280447/

相关文章:

  • idea同时启动application,启用不同端口
  • 基于stm32单片机的智能行李箱系统
  • 【好物推荐】高效文件分享神器!草料二维码让资料传递告别繁琐
  • 基于STM32单片机的智能路灯系统
  • 论文写作利器:6款AI驱动平台对比评测,智能润色让语言更专业
  • 基于stm32单片机的智能台灯系统
  • LLM实时解析饮食日记,糖尿病管理更精准
  • AI论文助手Top8:横向对比平台写作质量与降重效率,便捷化操作体验
  • vue3 setup插件 vite-plugin-vue-setup-extend
  • AI学术优化工具盘点:6个平台实测,自动改写功能提升论文可读性
  • 基于stm32单片机的智能宿舍管理系统
  • 6大AI论文优化工具横向测评:从语言流畅度到学术规范全覆盖
  • React的代理配置
  • 2026最新强韧固发洗发水产品top5推荐!国内优质防脱洗护品牌权威榜单发布,科学防脱助力健康秀发.
  • AtCoder Beginner Contest竞赛题解 | AtCoder Beginner Contest 439
  • 智能论文润色工具评测:6款AI平台如何让学术表达更清晰精准
  • 人群仿真软件:Legion_(13).Legion仿真项目管理
  • 2026最新草本防脱洗发水国货品牌top5推荐!国内优质防脱护理产品权威榜单发布,专业呵护宝妈_油头人群_干枯受损发质_女性脱发人群.
  • 6个AI论文优化平台深度评测:智能改写让学术语言更流畅自然
  • C++算法训练第九天
  • 基于AI的学术写作工具横评:6大平台助你一键提升论文表达质量
  • 大数据采集技术盘点:Flume vs Kafka vs Sqoop
  • 人群仿真软件:Legion_(13).Legion在交通枢纽中的应用
  • YOLOv8改进 - 注意力机制 | CPCA (Channel Prior Convolutional Attention) 通道先验卷积注意力通过动态权重分配增强复杂场景特征感知
  • 巴菲特的逆向投资艺术:在社交媒体时代的执行挑战
  • 基于Python(Numpy)的周期信号傅里叶变换
  • 解决RAG检索冲突的5种方法,让你的智能问答系统更可靠
  • 特征工程不该再靠人肉:聊聊 Feature Store 为什么是数据团队的分水岭
  • 【ACM出版 | 高录用 | 快速EI检索 | 高校、协会联合支持举办 | 双一流大学教授到场报告 | 往届会后3个月左右完成EI检索】第七届大数据与信息化教育国际学术会议(ICBDIE 2026)
  • 微信立减金回收这样做,轻松提现不踩坑!