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

news/2026/1/21 22:23:14/文章来源:https://www.cnblogs.com/conpi/p/19514222

__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.mzph.cn/news/1196485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ivan Zhao | 蒸汽、钢铁与无限心智

注:本文为英文引文,机翻未校。 如有内容异常,请看原文。 Steam, Steel, and Infinite Minds 蒸汽,钢铁和无限心智 December 23, 2025 By Ivan Zhao Every era is shaped by its miracle material. Steel forged the Gilded Age…

【AI+教育】生成式AI赋能教育研究与写作

在AI技术飞速渗透教育领域的当下,生成式AI不仅能辅助教学,更能成为教育研究与论文写作的高效工具。本文结合实操场景,拆解AI在教育研究方法设计、学术写作中的应用要点,全程保留核心原话与实操细节,助力教育从业者、研究者快速上手。 一、教育研究方法设计:四框架+AI辅助…

《AI应用架构师:用AI智能体为中小学初等教育智能化教育辅助增添新活力》

1. 标题(Title) 《AI应用架构师:用AI智能体为中小学初等教育智能化教育辅助增添新活力》 《从0到1打造中小学AI助教:AI应用架构师实战指南》 《让AI走进课堂:中小学智能教育辅助系统的架构与落地》 《AI应用架构师必修课:构建中小学个性化学习助手》 《教育+AI新范式:中…

基于stm32单片机的智能行李箱系统

目录硬件设计软件功能用户交互电源管理安全机制源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!硬件设计 STM32单片机作为主控芯片,通常选择STM32F103系列或STM32F4系列,具备丰富的外设接口和低功耗特性。系统集…

LangChain入门(九)- 从单元测试到行为轨迹追踪,让你的AI不再“乱拐弯”

前言最近在研究LangChain的测试模块,不得不说这玩意儿设计得挺有意思。传统的单元测试在AI智能体面前就像用尺子量水流量——完全不对路。想想看,一个简单的智能体就包含了LLM的随机性、Prompt的蝴蝶效应、工具调用的不确定性,这测试难度直接…

基于STM32单片机的智能衣柜的设计系统

目录STM32智能衣柜系统概述硬件设计软件设计应用场景扩展功能源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!STM32智能衣柜系统概述 智能衣柜系统基于STM32单片机实现环境监测、衣物管理、远程控制等功能,结合传感器、无线…

【好物推荐】高效文件分享神器!草料二维码让资料传递告别繁琐

高效文件分享神器!草料二维码让资料传递告别繁琐 在日常工作中,你是否还在为文件分享的繁琐流程烦恼?邮件附件易超限、网盘分享需登录、微信传文件格式易错乱……这些痛点,一款在线工具就能轻松解决——它就是草料二维码(官网:cli.im)。这款功能强大的在线二维码生成器…

基于STM32单片机的智能路灯系统

目录STM32智能路灯系统概述核心功能模块硬件组成软件设计应用优势典型应用场景源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!STM32智能路灯系统概述 STM32智能路灯系统是基于STM32微控制器设计的物联网解决方案,通过传感器…

论文写作利器:6款AI驱动平台对比评测,智能润色让语言更专业

开头总结工具对比(技能4) �� 为帮助学生们快速选出最适合的AI论文工具,我从处理速度、降重效果和核心优势三个维度,对比了6款热门网站,数据基于实际使用案例: 工具名称 处理速度 降…

基于stm32单片机的智能台灯系统

目录硬件组成软件功能创新设计应用场景源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!硬件组成 STM32单片机作为主控芯片,负责数据处理和逻辑控制。常见的型号包括STM32F103系列,具备丰富的外设接口和较强的处理…

AI论文助手Top8:横向对比平台写作质量与降重效率,便捷化操作体验

AI论文生成工具排行榜:8个网站对比,论文降重写作功能全 工具对比总结 以下是8个AI论文工具的简要排名,基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈,数据源于引用内容案例: 工具名称 主要功能 优…

LLM实时解析饮食日记,糖尿病管理更精准

📝 博客主页:Jax的CSDN主页 目录 LLM实时解析饮食日记:糖尿病管理的精准革命 引言:饮食管理的精准化困局 技术价值:从场景痛点到LLM能力映射 2.1 痛点解构:糖尿病管理的“实时性缺口” 2.2 LLM能力映射&…

WebAPI 项目通过 CI/CD 自动化部署到 Linux 服务器(docker-compose)

本文先列举了一个简单的示例项目,然后通过 CI/CD 的方式,将私有镜像库 Harbor 中的镜像,发布到 Linux 中的 Docker 服务。〇、前言 本文先列举了一个简单的示例项目,然后通过 CI/CD 的方式,将私有镜像库 Harbor 中…

AI学术优化工具盘点:6个平台实测,自动改写功能提升论文可读性

开头总结工具对比(技能4) �� 为帮助学生们快速选出最适合的AI论文工具,我从处理速度、降重效果和核心优势三个维度,对比了6款热门网站,数据基于实际使用案例: 工具名称 处理速度 降…

vue3 setup插件 vite-plugin-vue-setup-extend

setup插件 npm i vite-plugin-vue-setup-extend -D vite.config.ts 加入import VueSetupExtend from vite-plugin-vue-setup-extend和 VueSetupExtend()import { fileURLToPath, URL } from node:urlimport { defineCo…

基于stm32单片机的智能家居控制系统

目录硬件组成软件设计功能实现应用场景开发资源源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!硬件组成 STM32单片机作为核心控制器,通常选用STM32F103或STM32F407系列,具备丰富的外设接口和低功耗特性。传感器…

基于stm32单片机的智能宿舍管理系统

目录系统概述核心功能模块硬件设计软件实现应用场景优势与扩展源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于STM32单片机的智能宿舍管理系统是一种集成环境监测、安全防护、能源管理和远程控制的综合解决方案。该系统通…

AI论文助手Top8:综合测评写作产出与降重性能,一键式解决方案

AI论文生成工具排行榜:8个网站对比,论文降重写作功能全 工具对比总结 以下是8个AI论文工具的简要排名,基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈,数据源于引用内容案例: 工具名称 主要功能 优…

6大AI论文优化工具横向测评:从语言流畅度到学术规范全覆盖

开头总结工具对比(技能4) �� 为帮助学生们快速选出最适合的AI论文工具,我从处理速度、降重效果和核心优势三个维度,对比了6款热门网站,数据基于实际使用案例: 工具名称 处理速度 降…

React的代理配置

方法一: 在package.json中追加如下配置 "proxy":"http://localhost:5000" 说明: 1.优点:配置简单,前端请求资源时可以不加任何前缀。 2.缺点:不能配置多个代理。 3.工作方式:上述方式配置代理,当请求了3000不存在的资源时,那么该请求会转发给…