15.dataloader的使用
dataset vs dataloaderDataset概念定义数据集位置和索引映射关系类比扑克牌堆一摞扑克牌是数据集每张是我们的数据我们知道第一张牌长什么样。DataLoader功能是加载器把我们的数据加载到一个神经网络当中。我们的手就可以当成一个神经网络。dataloader所做的事情就是每次从dataset中去取数据每次取多少怎么取是由dataloader当中的参数进行设置的。比如我们可以控制每次从dataset当中取四张牌,或者我们取的过程中是用一只手去抓牌还是两只手去抓牌。dataloader文档dataloader是批量数据加载器控制取样方式/批量大小/是否打乱。我们在pytorch官网搜索dataloader即可查看torch.utils.data.DataLoader的文档。核心参数:dataset: 必需参数指定自定义数据集功能定义数据集位置、数据索引方式、数据总量其他参数: 大多有默认值实际使用只需设置少量参数典型用法data_loadertorch.utils.data.DataLoader(dataset)forepochinrange(10):forbatchindata_loader:train_batch()参数介绍batch_size定义表示每次从数据集中加载的样本数量功能控制每次迭代返回的数据量大小示例当batch_size2时每次会从数据集中抓取2个样本默认值默认为1即每次加载单个样本shuffle定义控制是否在每个epoch开始时打乱数据顺序功能True每次epoch数据顺序不同类似洗牌效果False保持数据原始顺序默认值默认为False实际应用通常建议设置为True以获得更好的训练效果类比类似打牌时的洗牌过程True表示每局牌的顺序都不同num_workers定义控制数据加载使用的子进程数量功能值为0表示在主进程加载数据默认注意事项在Windows系统下可能出现问题BrokenPipeError遇到错误时可尝试设置为0来解决默认值默认为0性能影响数值越大通常加载速度越快但需考虑系统兼容性drop_last功能控制当数据集大小不能被batch_size整除时是否舍弃最后不完整的批次取值True舍弃最后不足一个batch的数据False默认保留最后不完整的batch示例100张图片batch_size3时100÷333余1drop_lastTrue只取前99张33个完整batchdrop_lastFalse取全部100张33个完整batch1个不完整batch注意如何查看test_data返回的数据格式我们按住command键鼠标点击在CIRAR10上查看其getItem定义的返回格式。我们可以看到返回的 是一个元祖有img和target.batchsize为4那么dataloader会将4个样本的img打包成imgs,target打包成targets.如下遍历test_loader时是每四个样本图片进行打包输出的。torch.Size([3,32,32]). 3是3个通道32和32是图片尺寸3232这个是只有1张图片。torch.Size([4,3,32,32]) 4是4张图片的意思。3是3个通道。32和32是图片尺寸为3232的含义。tensor([2,3,6,8])是这四张图片每张图片的target值。如下我们可以看到test_loader中有采样器sample,randomsampler代表随机采样也就是每次都是随机采样4个样本执行如下代码然后在终端输入 tensorboard --logdir‘src/dataloader’importtorchvision# 准备的测试数据集fromtorch.utils.dataimportDataLoaderfromtorch.utils.tensorboardimportSummaryWriter test_datatorchvision.datasets.CIFAR10(./dataset,trainFalse,transformtorchvision.transforms.ToTensor())test_loaderDataLoader(datasettest_data,batch_size64,shuffleTrue,num_workers0,drop_lastTrue)# 测试数据集中第一张图片及targetimg,targettest_data[0]print(img.shape)print(target)writerSummaryWriter(dataloader)forepochinrange(2):step0fordataintest_loader:imgs,targetsdata# print(imgs.shape)# print(targets)writer.add_images(Epoch: {}.format(epoch),imgs,step)stepstep1writer.close()我们可以在tensorboard查看结果发现图片被每8*864张作为一批放置在各个step中。drop_last Trueimporttorchvision# 准备的测试数据集fromtorch.utils.dataimportDataLoaderfromtorch.utils.tensorboardimportSummaryWriter test_datatorchvision.datasets.CIFAR10(./dataset,trainFalse,transformtorchvision.transforms.ToTensor())test_loaderDataLoader(datasettest_data,batch_size64,shuffleTrue,num_workers0,drop_lastFalse)# 测试数据集中第一张图片及targetimg,targettest_data[0]print(img.shape)print(target)writerSummaryWriter(dataloader)forepochinrange(2):step0fordataintest_loader:imgs,targetsdata# print(imgs.shape)# print(targets)writer.add_images(Epoch: {}.format(epoch),imgs,step)stepstep1writer.close()执行如下代码然后在终端输入 tensorboard --logdir‘src/dataloader’可以看到最后一个step下不是8*864张图片了。drop_lastFalse保留最后不完整的batchshuffleshuffle参数作用功能控制不同epoch间数据顺序是否变化取值True每轮epoch重新打乱数据顺序推荐False保持相同顺序执行如下代码然后在终端输入 tensorboard --logdir‘src/dataloader’我们发现两轮的图片都是一致的。实际应用建议常规设置shuffleTrue避免模型学习到数据顺序特征drop_lastTrue保证每批数据量一致便于计算特殊情况小数据集可设drop_lastFalse充分利用所有数据测试阶段通常设shuffleFalse保证结果可复现总结

相关新闻

视频音频怎么稳定抽取?从媒体探测到可用音频资产的实现方案

视频音频怎么稳定抽取?从媒体探测到可用音频资产的实现方案

视频入库后,很多系统都会需要一份独立音频:内容审核要做语音检测,运营要截取片段,剪辑工具要读波形,语音识别要处理采样,甚至只做静音检测也需要可靠音轨。最常见的错误是把一条 FFmpeg 命令当成完整方案&a…

2026/9/30 2:41:58 阅读更多 →
实测AI自动生成管理系统:一句话需求,几分钟出整套系统

实测AI自动生成管理系统:一句话需求,几分钟出整套系统

实测系列第三篇(速度篇)。 前两篇测了「零基础用户」和「完整交付」,这一篇测速度:从一句话需求提交,到整套系统可验收,中间到底要多久、等待期间里发生了什么、快会不会牺牲质量。 全文用真实时间戳记录&a…

2026/9/30 2:40:58 阅读更多 →
基于STM32单片机教室智能灯PWM控制照明灯人体感应分区蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S477

基于STM32单片机教室智能灯PWM控制照明灯人体感应分区蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S477

S477-时钟万年历3区域人体感应3路灯光光照PWM调光延时关灯自动手动OLED屏声光提醒按键蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、OLED屏、无线蓝牙/WIFI/视频监控/云平台模块-可选、纽扣电池、USB灯电路、光敏电阻电路、红外检测、蜂鸣器报警、电源电路…

2026/9/30 2:40:58 阅读更多 →

最新新闻

拆开这个环:优化 RAG 通道,解开 SEO 与 GEO 的死循环

拆开这个环:优化 RAG 通道,解开 SEO 与 GEO 的死循环

摘要:GEO 没有标准,它只是 RAG 的引用打分回路。这个回路正在反向磨平人类内容:RLHF 把 AI 磨成平均值,GEO 再让人类照着这个平均值生长,两个平均化首尾相接,咬成死循环。解法不是拒绝 AI,也不是…

2026/9/30 7:55:32 阅读更多 →
深度学习调参实战指南:从超参数搜索到训练管道优化的系统方法

深度学习调参实战指南:从超参数搜索到训练管道优化的系统方法

简介:这份《深度学习调参指南中文版》源自Google研究团队Varun Godbole等人撰写的经典调优手册,面向具备机器学习基础、希望系统提升模型性能的工程师与研究人员。文档从基础理论延伸到高级技巧,涵盖损失函数选择、优化器比较、超参数调整策略…

2026/9/30 7:55:31 阅读更多 →
JSON与JSON-RPC的区别:数据格式与通信协议的实战解析

JSON与JSON-RPC的区别:数据格式与通信协议的实战解析

1. 先说透一件事:JSON 是数据格式,JSON-RPC 是通信协议 做了十几年接口开发,我见过太多人在同一个问题上栽跟头:看到"JSON-RPC"这个名字,就下意识以为它是 JSON 的某种增强版,或者干脆把它当成&q…

2026/9/30 7:55:31 阅读更多 →
UE在Windows交叉编译Linux打包:工具链配置与RunUAT命令详解

UE在Windows交叉编译Linux打包:工具链配置与RunUAT命令详解

手上只有一台Windows打包机,项目却要出Linux版本——这个局面我在几个团队里都碰到过。运维不想再养一台Linux构建机,发行版升级还容易把老构建环境搞崩,最后能落地的方案基本只有一个:在Windows上装UE自带的Linux交叉编译工具链&…

2026/9/30 7:55:31 阅读更多 →
基于Flutter与自研解析器的OpenHarmony JSON格式化工具实践

基于Flutter与自研解析器的OpenHarmony JSON格式化工具实践

1. 从“为什么不用 ArkTS 原生”说起:工具类App在OpenHarmony上的选型逻辑1.1 一个每天都在发生的真实需求这个项目的起点其实非常朴素:团队在 OpenHarmony 设备上做内部效率工具,每天都要面对接口联调、日志排查和配置整理。你从网页控制台复…

2026/9/30 7:55:31 阅读更多 →
银河麒麟V10源码编译SVN 1.8.14:依赖编译与配置避坑指南

银河麒麟V10源码编译SVN 1.8.14:依赖编译与配置避坑指南

简介:本资源面向在银河麒麟操作系统上部署版本控制服务的运维与开发人员,聚焦于从源码编译搭建完整SVN环境这一典型场景,帮助读者解决国产化平台下组件依赖复杂、配置项繁多的问题。压缩包内共1个docx文档,约202KB,以图…

2026/9/30 7:54:31 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →