贵州网站制作设计公司企业邮箱申请

张小明 2025/12/30 3:53:14
贵州网站制作设计公司,企业邮箱申请,智能城市 电子商务网站建设,wordpress apache浙大疏锦行 在遇到大规模数据集时#xff0c;显存常常无法一次性存储所有数据#xff0c;所以需要使用分批训练的方法。为此#xff0c;PyTorch提供了DataLoader类#xff0c;该类可以自动将数据集切分为多个批次batch#xff0c;并支持多线程加载数据。此外#xff0c;…浙大疏锦行在遇到大规模数据集时显存常常无法一次性存储所有数据所以需要使用分批训练的方法。为此PyTorch提供了DataLoader类该类可以自动将数据集切分为多个批次batch并支持多线程加载数据。此外还存在Dataset类该类可以定义数据集的读取方式和预处理方式。1. DataLoader类决定数据如何加载2. Dataset类告诉程序去哪里找数据如何读取单个样本以及如何预处理。为了引入这些概念我们现在接触一个新的而且非常经典的数据集MNIST手写数字数据集。该数据集包含60000张训练图片和10000张测试图片每张图片大小为28*28像素共包含10个类别。因为每个数据的维度比较小所以既可以视为结构化数据用机器学习、MLP训练也可以视为图像数据用卷积神经网络训练。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, trainTrue, downloadTrue, transformtransform ) test_dataset datasets.MNIST( root./data, trainFalse, transformtransform )一、Dataset类现在我们想要取出来一个图片看看长啥样因为datasets.MNIST本质上集成了torch.utils.data.Dataset所以自然需要有对应的方法。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] # 获取图片和标签这里很难理解为什么train_dataset[sample_idx]可以获取到图片和标签是因为 datasets.MNIST这个类继承了torch.utils.data.Dataset类这个类中有一个方法__getitem__这个方法会返回一个tupletuple中第一个元素是图片第二个元素是标签。我们来详细介绍下torch.utils.data.Dataset类PyTorch 的torch.utils.data.Dataset是一个抽象基类所有自定义数据集都需要继承它并实现两个核心方法- __len__()返回数据集的样本总数。- __getitem__(idx)根据索引idx返回对应样本的数据和标签。PyTorch 要求所有数据集必须实现__getitem__和__len__这样才能被DataLoader等工具兼容。这是一种接口约定类似函数参数的规范。这意味着如果你要创建一个自定义数据集你需要实现这两个方法否则PyTorch将无法识别你的数据集。在 Python 中__getitem__和__len__ 是类的特殊方法也叫魔术方法 它们不是像普通函数那样直接使用而是需要在自定义类中进行定义来赋予类特定的行为。以下是关于这两个方法具体的使用方式__getitem__方法用于让对象支持索引操作当使用[]语法访问对象元素时Python 会自动调用该方法。# 示例代码 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通过定义__getitem__方法让MyList类的实例能够像 Python 内置的列表一样使用索引获取元素。__len__方法用于返回对象中元素的数量当使用内置函数len()作用于对象时Python 会自动调用该方法。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这里定义的__len__方法使得MyList类的实例可以像普通列表一样被len()函数调用获取长度。# minist数据集的简化版本 class MNIST(Dataset): def __init__(self, root, trainTrue, transformNone): # 初始化加载图片路径和标签 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 # 返回处理后的图像和标签- Dataset 厨师准备单个菜品- DataLoader 服务员将菜品按订单组合并上桌预处理如切菜、调味属于厨师的工作而非服务员。所以在dataset就需要添加预处理步骤。# 可视化原始图像需要反归一化 def imshow(img): img img * 0.3081 0.1307 # 反标准化 npimg img.numpy() plt.imshow(npimg[0], cmapgray) # 显示灰度图像 plt.show() print(fLabel: {label}) imshow(image)二、Dataloader类# 3. 创建数据加载器 train_loader DataLoader( train_dataset, batch_size64, # 每个批次64张图片,一般是2的幂次方这与GPU的计算效率有关 shuffleTrue # 随机打乱数据 ) test_loader DataLoader( test_dataset, batch_size1000 # 每个批次1000张图片 # shuffleFalse # 测试时不需要打乱数据 )三、总结
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发交接清单重庆网站设计软件

在 AI 搜索逐渐普及的背景下,开发者和数据分析师不仅需要关注关键词排名,还需要理解关键词在不同区域、不同场景下的表现。 GEO 查询工具为这种需求提供了技术支撑,通过多维度数据采集和分析,可以帮助团队更精确地评估关键词价值。…

张小明 2025/12/30 3:53:14 网站建设

网站建设价类型做网站需要会什么

还在为找不到优质B站创作者而烦恼吗?面对海量UP主,如何快速识别真正有实力的内容创作者?BiliScope免费开源工具为你提供完美解决方案! 【免费下载链接】biliscope Bilibili chrome extension to show uploaders stats 项目地址:…

张小明 2025/12/30 3:52:40 网站建设

改革开放40周年网站发展建设合肥大型网站

在IPTV观看体验中,最令人头疼的就是播放列表中大量频道无法正常观看。面对成百上千的频道,手动一个个测试既耗时又费力。现在,有了iptv-checker这款专业工具,你可以在几分钟内完成整个播放列表的可用性检测。 【免费下载链接】ipt…

张小明 2025/12/30 3:52:06 网站建设

潍坊建设网站多少钱wordpress 判断自定义栏目

5步精通Karabiner-Elements键盘映射:从新手到配置专家 【免费下载链接】Karabiner-Elements 项目地址: https://gitcode.com/gh_mirrors/kar/Karabiner-Elements 你是否曾在macOS上为固定的键盘布局而苦恼?是否遇到过组合键冲突导致操作失误的尴…

张小明 2025/12/30 3:51:31 网站建设

湖南网站建设费用七牛WordPress代码

2025最新!9个AI论文平台测评:继续教育写论文痛点全解析 2025年AI论文平台测评:为何需要这份榜单? 随着人工智能技术的快速发展,越来越多的学术工作者开始依赖AI工具辅助论文写作。然而,面对市场上五花八门的…

张小明 2025/12/30 3:50:58 网站建设

iis网站属性没有asp.net百度广告投诉电话

引言 在处理数据时,我们经常会遇到将多个列的值动态地转换为JSON格式的情况。这篇博客将介绍如何在Apache Spark中利用DataFrame API来实现这一需求。具体来说,我们将探讨如何通过Spark SQL函数和用户自定义函数(UDF)来创建一个包…

张小明 2025/12/30 3:50:25 网站建设