news 2026/4/16 18:22:11

Day41 Dataset和Dataloader

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day41 Dataset和Dataloader
import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision import datasets, transforms # torchvision 是一个用于计算机视觉的库,datasets 和 transforms 是其中的模块 import matplotlib.pyplot as plt # 设置随机种子,确保结果可复现 torch.manual_seed(42) # 1. 数据预处理,该写法非常类似于管道pipeline # transforms 模块提供了一系列常用的图像预处理操作 # 先归一化,再标准化 transform = transforms.Compose([ transforms.ToTensor(), # 转换为张量并归一化到[0,1] transforms.Normalize((0.1307,), (0.3081,)) # MNIST数据集的均值和标准差,这个值很出名,所以直接使用 ]) # 2. 加载MNIST数据集,如果没有会自动下载 train_dataset = datasets.MNIST( root='./data', train=True, download=True, transform=transform ) test_dataset = datasets.MNIST( root='./data', train=False, transform=transform ) import matplotlib.pyplot as plt # 随机选择一张图片,可以重复运行,每次都会随机选择 sample_idx = torch.randint(0, len(train_dataset), size=(1,)).item() # 随机选择一张图片的索引 # len(train_dataset) 表示训练集的图片数量;size=(1,)表示返回一个索引;torch.randint() 函数用于生成一个指定范围内的随机数,item() 方法将张量转换为 Python 数字 image, label = train_dataset[sample_idx] # 获取图片和标签 # 示例代码 class MyList: def __init__(self): self.data = [10, 20, 30, 40, 50] def __getitem__(self, idx): return self.data[idx] # 创建类的实例 my_list_obj = MyList() # 此时可以使用索引访问元素,这会自动调用__getitem__方法 print(my_list_obj[2]) # 输出:30 class MyList: def __init__(self): self.data = [10, 20, 30, 40, 50] def __len__(self): return len(self.data) # 创建类的实例 my_list_obj = MyList() # 使用len()函数获取元素数量,这会自动调用__len__方法 print(len(my_list_obj)) # 输出:5 # minist数据集的简化版本 class MNIST(Dataset): def __init__(self, root, train=True, transform=None): # 初始化:加载图片路径和标签 self.data, self.targets = fetch_mnist_data(root, train) # 这里假设 fetch_mnist_data 是一个函数,用于加载 MNIST 数据集的图片路径和标签 self.transform = transform # 预处理操作 def __len__(self): return len(self.data) # 返回样本总数 def __getitem__(self, idx): # 获取指定索引的样本 # 获取指定索引的图像和标签 img, target = self.data[idx], self.targets[idx] # 应用图像预处理(如ToTensor、Normalize) if self.transform is not None: # 如果有预处理操作 img = self.transform(img) # 转换图像格式 # 这里假设 img 是一个 PIL 图像对象,transform 会将其转换为张量并进行归一化 return img, target # 返回处理后的图像和标签 # 可视化原始图像(需要反归一化) def imshow(img): img = img * 0.3081 + 0.1307 # 反标准化 npimg = img.numpy() plt.imshow(npimg[0], cmap='gray') # 显示灰度图像 plt.show() print(f"Label: {label}") imshow(image) # 3. 创建数据加载器 train_loader = DataLoader( train_dataset, batch_size=64, # 每个批次64张图片,一般是2的幂次方,这与GPU的计算效率有关 shuffle=True # 随机打乱数据 ) test_loader = DataLoader( test_dataset, batch_size=1000 # 每个批次1000张图片 # shuffle=False # 测试时不需要打乱数据 )

@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:56:51

注意力机制优化:针对Transformer的专项加速

注意力机制优化:针对Transformer的专项加速 在大模型时代,一个令人熟悉的场景是:研发团队刚刚完成了一个强大的语言模型训练,性能指标亮眼,但在部署到线上服务时却频频卡顿——响应延迟动辄上百毫秒,吞吐 …

作者头像 李华
网站建设 2026/4/16 12:08:33

springboot_ssmWeb的篮球CBA联赛信息管理系统

目录具体实现截图系统所用技术介绍写作提纲核心代码部分展示结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 springboot_ssmWeb的篮球CBA联赛信息管理系统 系统所用技术介绍 本毕业设计项目基于B/S结构模式&…

作者头像 李华
网站建设 2026/4/15 23:46:46

springboot_ssm爱宠宠物医院挂号预约系统管理系统设计与实现

目录 具体实现截图系统所用技术介绍写作提纲核心代码部分展示结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 springboot_ssm爱宠宠物医院挂号预约系统管理系统设计与实现 系统所用技术介绍 本毕业设计项目…

作者头像 李华
网站建设 2026/4/16 11:05:35

Java毕设项目:基于Springboot+Vue的电子商务订单管理系统设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 11:06:32

横向对比测试:TensorRT vs OpenVINO vs TFLite

横向对比测试:TensorRT vs OpenVINO vs TFLite 在自动驾驶的感知系统中,一个关键挑战是:如何让车载 GPU 在 30 毫秒内完成一帧复杂场景下的目标检测?这不仅是算法的问题,更是推理效率的博弈。现实中的模型往往“训练得…

作者头像 李华
网站建设 2026/4/15 21:30:48

稀疏+量化双管齐下:极限压缩大模型体积

稀疏量化双管齐下:极限压缩大模型体积 在大模型时代,一个令人又爱又恨的现实是:性能越强的模型,部署成本也越高。当我们在实验室里为百亿参数模型的高准确率欢呼时,工程团队可能正为它在生产环境中“跑不动”而焦头烂额…

作者头像 李华