知名网站建设设计wordpress 网格主题

张小明 2026/1/8 17:00:13
知名网站建设设计,wordpress 网格主题,wordpress翠竹林主题,巩义网站建设浙大疏锦行 在遇到大规模数据集时#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进行投诉反馈,一经查实,立即删除!

自动生成海报的网站wordpress开户多站点

线程编程全解析:原理、创建与操作 1. 线程基础概念 在操作系统中,尤其是在未深入研究微软 Windows 架构时,人们可能会认为操作系统会为进程分配处理器时间,使其能在单处理器系统上同时执行。但实际上,处理器时间是分配给线程而非进程的。线程可看作是独立的执行路径,能…

张小明 2026/1/1 21:49:40 网站建设

建设房地产网站企业门户网站建设费用

问题引入:CTF流量分析的痛点与破局思路 【免费下载链接】CTF-NetA 项目地址: https://gitcode.com/gh_mirrors/ct/CTF-NetA 在CTF竞赛的网络安全赛道中,超过68%的参赛队伍因流量分析效率低下导致失分(基于2024年CTF赛事数据统计&…

张小明 2026/1/7 14:23:25 网站建设

浙江综合网站建设配件网站开发交流吧

你是否曾经在调试Ryzen系统时,面对复杂的电源管理问题感到束手无策?😩 当系统频繁出现莫名其妙的崩溃、超频后稳定性堪忧,或是供电参数难以精准控制时,一款专业的调试工具就显得尤为重要。SMUDebugTool——这款专为AMD…

张小明 2026/1/7 5:57:50 网站建设

12380网站建设情况报告南宁网站搭建

2025年,AI购物助手已渗透83%中国消费者的决策链路。阳狮集团最新报告显示,AI推荐商品的复购率比传统方式高27%,决策周期从3.2天缩短至2.1小时。快消品牌若想在这场认知革命中胜出,必须重构GEO(Generative Engine Optim…

张小明 2026/1/7 9:00:49 网站建设

如何做慕课网站立即注册

PaddlePaddle镜像支持多租户模式,适用于共享GPU集群 在AI研发日益普及的今天,越来越多团队面临一个共同挑战:如何让多个项目组高效、安全地共用一套昂贵的GPU资源?尤其是在高校实验室、企业AI中台或云服务商环境中,不同…

张小明 2026/1/7 9:02:21 网站建设

郑州网站建设讠汉狮网络企业网站备案备注

红帽 Linux 系统的日志管理、安全防护与网络故障排查 1. 日志管理工具 在红帽 Linux 系统中,有两个实用的日志管理工具:Logwatch 和 Logviewer。 1.1 Logwatch Logwatch 是一个 Perl 脚本,在红帽安装过程中默认安装,由 cron 每天夜间运行。它会遍历 /var/log 目录下的…

张小明 2026/1/7 7:32:32 网站建设