CIFAR-10是一个更接近普适物体的彩色图像数据集。CIFAR-10 是由Hinton 的学生Alex Krizhevsky 和Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含10 个类别的RGB 彩色图片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。
每个图片的尺寸为32 × 32 ,每个类别有6000个图像,数据集中一共有50000 张训练图片和10000 张测试图片。

import torchvision
import torchvision.transforms as transforms# 定义数据预处理
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])# 自动下载训练集
trainset = torchvision.datasets.CIFAR10(root='./data',  # 数据保存路径train=True,download=True,  # 设置为True自动下载transform=transform
)# 自动下载测试集
testset = torchvision.datasets.CIFAR10(root='./data',train=False,download=True,transform=transform
)

1. 导入必要的库

import torchvision

import torchvision.transforms as transforms

  1. torchvision:PyTorch 的视觉库,提供常用数据集、模型架构和图像转换工具。
  2. transforms:用于图像预处理的模块,如缩放、归一化等。

2. 定义数据预处理流程

transform = transforms.Compose([

    transforms.ToTensor(),

    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))

])

  1. transforms.Compose:将多个预处理操作按顺序组合。
  2. transforms.ToTensor()
    1. 将 PIL 图像或 NumPy 数组(H×W×C,范围 0-255)转换为 PyTorch 张量(C×H×W,范围 0.0-0)。
  3. transforms.Normalize(mean, std)
    1. 对每个通道进行归一化:output = (input - mean) / std
    2. 这里mean=(0.5, 0.5, 0.5)std=(0.5, 0.5, 0.5)将像素值从[0.0, 1.0]映射到[-1.0, 1.0](例如,0.0→-1.0,1.0→1.0)。

3. 下载并加载训练集

trainset = torchvision.datasets.CIFAR10(

    root='./data',  # 数据保存路径

    train=True,     # True表示训练集(50,000张)

    download=True,  # 自动下载(如果数据不存在)

    transform=transform  # 应用预处理

)

  1. torchvision.datasets.CIFAR10:CIFAR-10 数据集类,包含 10 个类别(如飞机、汽车、鸟类等)的 60,000 张 32×32 彩色图像。
  2. 参数说明
    1. root='./data':数据将下载到当前目录的data文件夹中。
    2. train=True:加载训练集(50,000 张);若为False则加载测试集(10,000 张)。
    3. download=True:若数据不存在,自动从互联网下载(约 170MB)。
    4. transform=transform:对图像应用之前定义的预处理(转为张量并归一化)。

4. 下载并加载测试集

testset = torchvision.datasets.CIFAR10(

    root='./data',  # 与训练集路径一致

    train=False,    # 加载测试集

    download=True,  # 自动下载

    transform=transform  # 应用相同的预处理

)

  1. 测试集与训练集结构相同,但用于模型评估,不参与训练。

5. 数据验证与使用

下载完成后,数据将存储在./data/cifar-10-batches-py目录中。你可以:

  1. 查看数据集大小

print(len(trainset))  # 输出: 50000

print(len(testset))   # 输出: 10000

  1. 访问单个样本

image, label = trainset[0]  # 获取第一张图像及其标签

print(image.shape)  # 输出: (3, 32, 32)

print(label)        # 输出: 6(对应类别索引)

  1. 使用数据加载器批量处理数据

from torch.utils.data import DataLoader

trainloader = DataLoader(trainset, batch_size=32, shuffle=True)

testloader = DataLoader(testset, batch_size=32, shuffle=False)

注意事项

  1. 下载路径
    1. 若指定路径(如./data)已存在 CIFAR-10 数据,download=True不会重复下载。
    2. 若路径错误或无写入权限,会抛出异常(如PermissionError)。
  2. 网络问题
    1. 首次下载需联网,可能需要几分钟。若下载中断,可删除./data目录后重新运行。
  3. 数据预处理
    1. 归一化参数meanstd通常根据数据集的统计特性设定。对于 CIFAR-10,常用(0.5, 0.5, 0.5)进行简单归一化。
    2. 若需要更精确的归一化,可计算数据集的真实均值和标准差(如mean=[0.4914, 0.4822, 0.4465]std=[0.2470, 0.2435, 0.2616])。

扩展应用

加载数据后,可用于训练 CNN 模型(如之前创建的SimpleCNN):

# 假设model已定义

from torch import nn, optim

criterion = nn.CrossEntropyLoss()

optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

# 训练循环

for epoch in range(5):  # 训练5个轮次

    for inputs, labels in trainloader:

        optimizer.zero_grad()

        outputs = model(inputs)

        loss = criterion(outputs, labels)

        loss.backward()

        optimizer.step()

    print(f"Epoch {epoch+1} completed")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90245.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90245.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90245.shtml

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

相关文章

蓝桥杯51单片机

这是我备考省赛的时候总结的错误点和创新点那个时候是用来提醒自己的,现在分享给你们看^_^一考点二注意点记得初始化Y4,Y5,Y6,Y7&…

【2025/07/23】GitHub 今日热门项目

GitHub 今日热门项目 🚀 每日精选优质开源项目 | 发现优质开源项目,跟上技术发展趋势 📋 报告概览 📊 统计项📈 数值📝 说明📅 报告日期2025-07-23 (周三)GitHub Trending 每日快照&#x1f55…

【生成式AI導論 2024】第12講:淺談檢定大型語言模型能力的各種方式 学习记录

跟标准答案做对比看是否正确 选择题是不是正确 MMLU massive multitask Language Understanding MT-bench 使用语言模型来评分 还有其他任务的对比,也有特别刁钻的问题 阅读长文的能力 grep kamradt 大海捞针

嵌入式 Qt 开发:实现开机 Logo 和无操作自动锁屏

在嵌入式设备开发中,为设备添加开机 Logo 和无操作自动锁屏功能是提升用户体验的重要环节。本文将详细介绍如何在 Qt 嵌入式项目中实现这两个功能。我们将使用 Qt 5/6 和 Linux 环境,确保代码的可移植性和通用性。项目结构为了实现这两个功能&#xff0c…

【AI智能体】Dify 开发与集成MCP服务实战操作详解

目录 一、前言 二、Dify 介绍 2.1 Dify是什么 2.2 MCP 介绍 2.2.1 什么是MCP 2.2.2 MCP核心特性 2.3 Dify中开发与使用MCP介绍 2.3.1 MCP Server开发与使用 2.4 dify 开发MCP Server优势 三、Dify开发与集成MCP操作过程 3.1 Dify MCP 插件说明 3.2 安装mcp-server插…

django filter按两个属性 去重

在Django中,如果你想基于两个属性去重,可以使用distinct()方法并结合annotate()和Count()来实现。这种方法通常用在查询集中,尤其是在你需要统计基于某些字段的唯一值时。 示例 假设你有一个Person模型,它有两个字段:f…

PHP高级进阶:突破编程边界,开启技术新征程

目录一、PHP 高级函数的深度剖析1.1 回调函数的高级应用1.2 递归函数的优化技巧二、面向对象编程的深化2.1 抽象类与接口的实际运用2.2 设计模式在 PHP 中的实现三、PHP 与数据库交互的高级技术3.1 数据库连接池的使用3.2 事务处理与数据一致性四、性能优化与调试4.1 代码性能分…

cx_Freeze python 打包详解

优点:有时比 PyInstaller 更好处理外部 .pyd做法:安装 cx_Freezeshpip install cx_Freeze新建 setup.py:pythonfrom cx_Freeze import setup, Executablebuild_exe_options {"packages": ["apscheduler.triggers.interval&qu…

Java字符串不可变性:从安全哲学到性能艺术的完美平衡

目录 引言 一、什么是String的不可变性? 二、解剖String的“防弹衣”:底层实现机制 1. final的三重防御体系 2. 方法实现的精妙设计 3. 构造函数的防御性编程 三、为什么String必须不可变?设计哲学的五大支柱 1. 字符串常量池&#x…

多服务器批量发布软件

当需要同时发布程序到多个服务器的时候,常规是通过jekins了但是喜欢了手动档,直接写了个简单批量发布软件,程序编译发布后,直接加载配置,选择对应的服务器,直接电机发布即可,基本可以媲美jekins…

基于.Net Core开源的库存订单管理系统

今天给大家推荐一套开源的库存订单管理系统。 项目简介 该项目是基于Asp.Net Core Mvc开发的库存订单管理系统,主要实现模块有仓库、产品、供应商、客户、采购订单、销售订单、发货、收货等等,该项目是单体架构,技术栈也不是最新的&#xf…

Django学习之旅--第13课:Django模型关系进阶与查询优化实战

在Django开发中,模型关系设计与查询性能直接决定了系统的扩展性和效率。当业务场景从简单的数据存储升级为复杂的关联分析(如订单统计、用户行为分析)时,基础的模型关系和查询方式已无法满足需求。本节课将深入讲解模型关系的高级…

简单理解现代Web应用架构:从简单到企业级

在开发Web应用程序时,理解如何构建一个既安全又高效的系统至关重要。本文将通过介绍从简单的三层架构到复杂的企业级架构的演变过程,帮助您更好地理解这些概念。1. 基础架构:React Node.js MySQL前端(React)&#xf…

修改 Lucide-React 图标样式的方法

修改 Lucide-React 图标样式的方法 使用 lucide-react 时&#xff0c;你可以通过多种方式修改图标的样式。以下是几种常用的方法&#xff1a; 1. 通过 className 属性 import { Home } from lucide-react;function MyComponent() {return <Home className"text-blue-50…

神经架构搜索革命:从动态搜索到高性能LLM的蜕变之路

本文将揭示如何通过神经架构搜索技术&#xff08;NAS&#xff09;自动发现最优网络结构&#xff0c;并将搜索结果转化为新一代高性能大型语言模型的核心技术。我们的实验证明&#xff0c;该方法在同等计算资源下可实现80%的性能飞跃&#xff01;第一部分&#xff1a;神经架构搜…

【LeetCode 热题 100】78. 子集——(解法三)位运算

Problem: 78. 子集 题目&#xff1a;给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1…

XCKU035‑1SFVA784C Xilinx FPGA KintexUltraScale AMD

XCKU035‑1SFVA784C 属于 Xilinx Kintex UltraScale 系列&#xff0c;基于领先的 20 nm FinFET 技术制程&#xff0c;旨在为中高端应用提供卓越的性能与功耗平衡。该器件采用 784‑ball Fine‑pitch BGA&#xff08;SFVA784&#xff09;封装&#xff0c;速度等级‑1&#xff0…

Encore.ts:下一代高性能 TypeScript 后端框架的崛起

在 Node.js 生态系统中&#xff0c;后端框架的选择直接影响 API 的性能、开发体验和可维护性。近年来&#xff0c;Elysia.js、Hono、Fastify 等框架凭借各自的优化策略崭露头角&#xff0c;而 Encore.ts 则凭借 Rust TypeScript 混合架构&#xff0c;在性能上实现了质的飞跃。…

【IP地址】IP归属地查询驱动企业实时战略调整

动态市场感知与资源调度优化​ IP归属地的实时分析为企业提供了市场需求的动态变化图。 基于实时数据处理框架&#xff0c;企业可将IP归属地数据与用户访问量、转化率等指标关联计算&#xff0c;生成区域市场活跃度热力图。 当某区域IP访问量在1小时内激增300%且停留时长提升至…

[Bug | Cursor] import error: No module named ‘data‘

import error: No module named ‘data’ Folder Structure root folder data folder dataloader.py src folder train.py <- where we try to import the dataloader.pyFailed Script ROOT_DIR Path(__file__).parent.parent os.chdir(ROOT_DIR) print(f"Using root…