python打卡day38

Dataset和Dataloader类

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

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

python 复制代码
import torch
import torchvision
from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np

# 设置随机种子以确保结果可重复
torch.manual_seed(42)

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2470, 0.2435, 0.2616))  # CIFAR的标准化参数
])
train_dataset = torchvision.datasets.CIFAR10(
    root='./dataCIFAR',  # 数据存放的路径
    train=True,     # 使用训练集
    download=True,  # 如果没有数据,就下载
    transform=transform
)

# 定义类别
classes = ('plane', 'car', 'bird', 'cat', 'deer',
           'dog', 'frog', 'horse', 'ship', 'truck')

# 随机选择一张图片
idx = torch.randint(0, len(train_dataset), size=(1,))
img, label = train_dataset[idx]

# 反标准化函数
def denormalize(x):
    mean = torch.tensor([0.4914, 0.4822, 0.4465])
    std = torch.tensor([0.2470, 0.2435, 0.2616])
    # CIFAR-10是彩色图像,需要对所有通道进行反标准化
    return x * std[:, None, None] + mean[:, None, None]

# 显示图片
plt.figure()
plt.imshow(denormalize(img).permute(1, 2, 0))  # 调整通道顺序以正确显示彩色图像
plt.title(f'Label: {classes[label]}')
plt.axis('off')
plt.show()


# 3. 创建数据加载器
train_loader = DataLoader(
    train_dataset,
    batch_size=64, # 每个批次64张图片,一般是2的幂次方,这与GPU的计算效率有关
    shuffle=True # 随机打乱数据
)

@浙大疏锦行

相关推荐
千天夜16 分钟前
深入剖析 `Path(path).parent.mkdir(parents=True, exist_ok=True)` —— 优雅处理目录创建的终极方案
python
简~76836 分钟前
python for in循环不能遍历整数怎么解决
python·大学生
aiqianji1 小时前
垂直专业的AI短篇小说写作软件有哪些特点?
人工智能·python
aqi001 小时前
15天学会AI应用开发(十三)上下文与RAG的阶段性总结
人工智能·python·大模型·ai编程·ai应用
程序员杰哥1 小时前
接口测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
大海变好AI1 小时前
专业的智能体算力架构高性价比品牌公司
python
江华森2 小时前
深入理解 Flask 实现原理
后端·python·flask
FriendshipT2 小时前
Ultralytics:解读SPPF模块
人工智能·pytorch·python·深度学习·目标检测
AOwhisky2 小时前
Python 基础语法(上篇 + 下篇)——综合自测题
linux·windows·python