Python打卡训练营学习记录Day38

news2025/5/29 9:55:45

知识点回顾

  1. Dataset类的__getitem__和__len__方法本质是python的特殊方法)
  2. Dataloader
  3. minist手写数据集了解

作业:了解cifar数据集尝试获取其中一张图片

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
import numpy as np
 
# 设置随机种子,确保结果可复现
torch.manual_seed(42)
 
 
# 1. 数据预处理,该写法非常类似于管道pipeline
# transforms 模块提供了一系列常用的图像预处理操作
 
# 先归一化,再标准化
transform = transforms.Compose([
    transforms.ToTensor(),  # 转换为张量并归一化到[0,1]
    transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))  # CIFAR-10数据集的均值和标准差(R/G/B通道)
])
 
 
# 2. 加载CIFAR-10数据集,如果没有会自动下载(CIFAR-10是32x32彩色图像,共10类)
train_dataset = datasets.CIFAR10(  # 替换为CIFAR10数据集类
    root='./data',       # 数据存储目录(与原MNIST路径一致,会自动新建CIFAR10子目录)
    train=True,          # True加载训练集(50000张),False加载测试集(10000张)
    download=True,       # 本地无数据时自动下载(约163MB,首次运行需等待)
    transform=transform  # 沿用原预处理管道(注意:CIFAR-10是3通道,建议后续调整Normalize的均值和标准差)
)
 
test_dataset = datasets.CIFAR10(  # 替换为CIFAR10数据集类
    root='./data',       # 与训练集共用存储目录
    train=False,         # 加载测试集用于模型评估
    transform=transform  # 保持与训练集相同的预处理
    # download=True      # 若训练集已下载,测试集可省略(或保留以确保完整性)
)
 
 
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] # 获取图片和标签
 
 
 
# CIFAR-10数据集的简化版本(32x32彩色图像,10类)
class CIFAR10(Dataset):
    def __init__(self, root, train=True, transform=None):
        # 初始化:加载图片路径和标签
        self.data, self.targets = fetch_cifar10_data(root, train) # 假设fetch_cifar10_data用于加载CIFAR-10数据
        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  # 返回处理后的图像和标签
 
 
# 可视化原始图像(需要反归一化,适配CIFAR-10的3通道彩色图像)
def imshow(img):
    # 使用CIFAR-10的标准差和均值进行反标准化(顺序对应R/G/B通道)
    img = img * torch.tensor([0.2023, 0.1994, 0.2010]).view(3, 1, 1) + torch.tensor([0.4914, 0.4822, 0.4465]).view(3, 1, 1)
    npimg = img.numpy()
    #调整维度顺序(PyTorch张量是[C,H,W],plt需要[H,W,C])并移除灰度映射
    plt.imshow(np.transpose(npimg, (1, 2, 0))) 
    plt.show()
 
print(f"Label: {label}")
imshow(image)

@浙大疏锦行

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

deepseek开源资料汇总

参考:DeepSeek“开源周”收官,连续五天到底都发布了什么? 目录 一、首日开源-FlashMLA 二、Day2 DeepEP 三、Day3 DeepGEMM 四、Day4 DualPipe & EPLB 五、Day5 3FS & Smallpond 总结 一、首日开源-FlashMLA 多头部潜在注意力机制&#x…

Linux编辑器——vim的使用

vim是一款多模式的编辑器。 基本操作:vim打开默认是命令模式,也就是输入命令然后系统执行指令,想要写代码,只需输入字母i,就进入插入模式,写完代码想要退出,按一下Esc,退回到命令模…

线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类

乳腺癌数据是sklearn中自带的数据集,需要通过相关特征对是否患有乳腺癌进行分类。 数据清洗与建模 首先加载相关库和相关数据 from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression import numpy as np import…

Jenkins分配对应项目权限与用户管理

在日常开发过程中经常会出现用户和权限管理问题,没有配置trigger时,通常需要我们手动构建,但此时前端和后端的朋友没有build权限,导致每次dev环境测试都需要麻烦我们手动去构建,消息传达不及时则会降低开发效率。 现有…

Mate桌面环境系统与终端模拟器参数配置

说明:   MATE桌面环境在使用中会优化一些参数配置,例如:电源选项、屏幕配置、字体配置、终端模拟器(Mate Terminal)配置等等。   通常工程师会根据自己喜好调整一些参数,修改后参数的保存位置在/home/u…

fabric 是一个开源框架,用于使用 AI 增强人类能力。它提供了一个模块化框架,用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题

​一、软件介绍 文末提供程序和源码下载 fabric 是一个开源框架,用于使用 AI 增强人类能力。它提供了一个模块化框架,用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题。 二、What and why 什么和为什么 自 2023 年初和 GenAI 以来&…

基于PDF流式渲染的Word文档在线预览技术

一、背景介绍 在系统开发中,实现在线文档预览与编辑功能是许多项目的核心需求,但在实际的开发过程中,我们经常会面临以下难点: 1)格式兼容性问题:浏览器原生不支持解析Word二进制格式,直接渲染会…

数据仓库基础知识总结

1、什么是数据仓库? 权威定义:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 1)数据仓库是用于支持决策、面向分析型数据处理; 2)对多个异构的数据源有效集…

vue2使用element中多选组件el-checkbox-group,数据与UI更新不同步

问题描述 使用element多选checkbox组件,点击勾选取消勾选,视图未变化,再次点击表单其他元素,多选组件勾选状态发生变化,视图和数据未同步 第一次尝试:再el-checkbox-group多选父组件上增加点击事件&…

linux磁盘分区及挂载、fdisk命令详解

文章目录 1.Linux磁盘分区概念精要‌1.1 分区的定义‌1.2 多分区的必要性‌1.2.1 数据安全隔离‌1.2.2 提升存储效率‌1.2.3 防止系统资源耗尽‌1.2.4 fdisk用法介绍 2.服务器挂载磁盘实战详细步骤2.1检查磁盘情况及格式化2.2磁盘分区2.3 磁盘目录挂载2.3.1 创建挂载目录2.3.2 …

Eigen矩阵存储顺序以及转换

一、Eigen矩阵存储顺序 在矩阵运算和线性代数中,"行优先"(Row-major)和"列优先"(Column-major)是两种不同的存储方式,它们决定了多维数组(如矩阵)在内存中的布局顺序。 1. 行优先(Row-major) 定义:矩阵按行顺序存储在内存中,即第一行的所有元…

2025蓝桥杯WP

引言 在2025年蓝桥杯网络安全赛道中,我们面对涵盖Web安全、逆向工程、PWN、取证分析以及加密解密等多领域的挑战,要求选手具备扎实且全面的安全技术与实战能力。本文将以实战记录的形式,逐题详细还原解题思路与操作步骤,并配以相…

数字人教师:开启教育智慧革新之旅

在科技浪潮的推动下,教育领域正经历一场由数字人教师引领的深刻变革,这不仅是技术与教育融合的创新实践,更是教育模式重塑的关键路径。 一、数字人教师的崛起:教育变革的必然选择 随着互联网、大数据、人工智能等前沿技术的飞速…

详解srs流媒体服务器的集群

前言: 什么是集群 集群就是多台计算机或服务器等资源,联在一起像一台大机器一样工作。比如一群蚂蚁一起搬东西,这些蚂蚁就类似集群里的各个部分。 为什么要集群 性能更强:能把任务分到多个机器上做,一起处理更快&…

ubuntu22.04 安装 SecureCRT8.7.3

用到的全部软件,都放在这个网盘里面了,自取。 链接: https://pan.baidu.com/s/1AR6Lj8FS7bokMR5IrLmsIw?pwd3dzv 提取码: 3dzv 如果链接失效了,关注公号:每日早参,回复:资源,即可免费获取&…

libvirt设置虚拟机mtu实现原理

背景 云计算场景下,可以动态调整虚拟机mtu,提高虚拟机网络性能。设置虚拟机(VM)virtio网卡的MTU(Maximum Transmission Unit)涉及 ​​宿主机(Host)、QEMU/KVM、vhost-net后端​​ 和 ​​虚拟机内部的virtio驱动​​之间的协作。 原理分析 1.libvirt设置mtu分析 libv…

AstroNex空间任务智能控制研究与训练数据集

数据集概述 AstroNex空间任务智能控制研究与训练数据集是朗迪锋科技基于Multiverse平台精心打造的首个全面覆盖航天器智能控制全周期的综合数据集产品。该数据集汇集了轨道动力学、姿态控制、机器视觉、环境感知等多维度数据,为航天器智能算法研发提供丰富的训练与…

汽车副水箱液位传感器介绍

汽车副水箱液位传感器是现代车辆冷却系统中不可或缺的关键部件,其核心功能在于实时监测冷却液存量,确保发动机在最佳温度范围内稳定运行。随着汽车电子化程度不断提升,这一看似简单的传感器已发展成为集机械、电子、材料技术于一体的精密装置,其工作原理与技术演进值得深入…

IEEE出版|2025年智能制造、机器人与自动化国际学术会议 (IMRA2025)

【重要信息】 会议官网:www.icimra.com 会议时间: 2025年11月14日-16日 会议地点: 中国湛江 截稿日期:2025年09月16日(一轮截稿) 接收或拒收通知:文章投递后5-7个工作日 会议提交检索:EI Compendex, Scopus IEEE出版|2025年…

EasyRTC嵌入式SDK音视频实时通话助力WebRTC技术与智能硬件协同发展

一、概述 在万物互联的数字化浪潮下,智能硬件已广泛渗透生活与工业领域,实时音视频通信成为智能硬件实现高效交互的核心需求。WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,而EasyRTC通过深度优化音…