[PyTorch][chapter 40][CIFAR-10 数据集]

前言:

        CIFAR-10和CIFAR-100是8000万个微小图像数据集的标记子集。它们由Alex Krizhevsky、Vinod Nair和Geoffrey Hinto收集

目录:

  1.      CIFAR-10数据集简介
  2.      在线下载方式
  3.      离线下载方式


一 CIFAR-10数据集简介

   

        CIFAR-10数据集由10个类别的60000张32x32彩色图像组成,每个类别有6000张图像。有50000个训练图像和10000个测试图像。

        数据集分为五个训练批次和一个测试批次,每个批次有10000张图像。测试批次包含从每个类别中随机选择的1000幅图像。训练批包含按随机顺序排列的剩余图像,但一些训练批可能包含来自一个类的图像多于来自另一类的图像。在它们之间,训练批次正好包含每个类的5000个图像。

以下是数据集中的类,以及每个类的10张随机图像:



Here are the classes in the dataset, as well as 10 random images from each:


二  在线下载方式

    

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 14 15:04:59 2023

@author: cxf
"""

import torch
from torchvision import datasets
from torchvision import transforms
from torch.utils.data import DataLoader


def download():
    
    maxIter = 2
    dataset_trans = transforms.Compose([
    transforms.ToTensor(),transforms.Resize((32,32))
    ]) 
    
    cifar = datasets.CIFAR10(root='cifar',train=True,transform= dataset_trans,download =True) #一次只加载一个
                             
    
    train_data = DataLoader(cifar, batch_size=32,shuffle=True)
    
  
    # DataLoader迭代产生训练数据提供给模型
    for i in range(maxIter):
        
        for index,(img,label) in enumerate(train_data):
            pass
                             
if __name__ == "__main__":
    
    download()

二  离线下载方式

   如果PC没安装代理,直接通过在线访问的方式会非常慢,

长时间无反应,可以通过离线方式下载

 1:进入 CIFAR-10 and CIFAR-100 datasets

2: 选择python version

 3: 下载完离线包后,解压缩到本地

 4: 把datasets 里面的

       root 路径设置成img 的路径

       download  设置成False

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 14 15:04:59 2023

@author: cxf
"""

import torch
from torchvision import datasets
from torchvision import transforms
from torch.utils.data import DataLoader


def download():
    
    print("\n start")
    rootDir='./data'
    maxIter = 2
    dataset_trans = transforms.Compose([
    transforms.ToTensor(),transforms.Resize((32,32))
    ]) 
    
    cifar = datasets.CIFAR10(root=rootDir,train=True,transform= dataset_trans,download =False) #一次只加载一个
                             
    
    train_data = DataLoader(cifar, batch_size=32,shuffle=True)
    
  
    # DataLoader迭代产生训练数据提供给模型
    for i in range(maxIter):
        
        for index,(img,label) in enumerate(train_data):
            print("\n index: %d"%index, "\t label",label, "\t  img",img.shape)
            pass
                             
if __name__ == "__main__":
    
    download()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 PyTorch 的 torchvision 库中的 `torchvision.datasets` 模块来读取 CIFAR-10 数据集。下面是一个示例代码: ``` import torch 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, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=100, shuffle=True, num_workers=2) testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=100, shuffle=False, num_workers=2) classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') ``` 在上面的代码中,我们首先定义了一个变换,其中包含了将图像转换为张量,并对图像进行归一化处理。然后,我们读取了训练数据集和测试数据集,并使用 PyTorch 的 `DataLoader` 类封装了数据。最后,我们定义了 CIFAR-10 中的类别名称。 ### 回答2: PyTorch提供了一个方便的数据预处理工具包torchvision,它可以轻松加载CIFAR-10数据集。下面是使用PyTorch读取CIFAR-10数据集的步骤: 1. 导入必要的库和模块,包括torch、torchvision和transforms。 ```python import torchvision import torchvision.transforms as transforms ``` 2. 定义数据转换操作。CIFAR-10数据集中的图像是32x32像素的彩色图像,因此我们需要将它们转换为张量,并进行归一化处理。 ```python transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5)) ]) ``` 3. 加载训练集和测试集。可以使用torchvision.datasets.CIFAR10函数加载CIFAR-10数据集。需要指定数据集的根目录、训练集还是测试集以及定义的数据转换操作。 ```python trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True, num_workers=2) testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=False, num_workers=2) ``` 4. 可以通过遍历训练集和测试集的数据加载器来获取图像数据和标签。 ```python for batch_idx, (images, labels) in enumerate(trainloader): # 使用图像和标签进行计算 for batch_idx, (images, labels) in enumerate(testloader): # 使用图像和标签进行计算 ``` 这些步骤将帮助您使用PyTorch读取和加载CIFAR-10数据集。您可以根据需要对数据进行预处理、调整批大小和进行其他操作来适应您的模型训练需求。 ### 回答3: 使用PyTorch读取CIFAR-10数据集可以通过以下几个步骤完成: 1. 导入所需的库和模块: ``` import torch import torchvision import torchvision.transforms as transforms ``` 2. 设置数据预处理和转换: ``` transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) ``` 这里的预处理操作将图像数据转换为张量,并对每个通道进行标准化处理,以确保数据平稳和可训练性。 3. 下载和加载数据集: ``` trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2) testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2) ``` 这里的`train=True`表示我们加载的是训练集,`train=False`表示加载测试集。`batch_size`表示每个小批次包含的样本数量,`shuffle`表示是否对数据进行随机洗牌,`num_workers`表示用于数据加载的并行线程数。 4. 定义类别标签: ``` classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') ``` 这里的类别标签是CIFAR-10数据集中的十个类别。 5. 使用数据集: ``` # 对训练集进行迭代并显示其中一部分图像和标签 dataiter = iter(trainloader) images, labels = dataiter.next() # 打印图像 print(images.shape) # 打印标签 print(labels) ``` 这里的`images`是一个包含训练图像的张量,`labels`是对应的标签。 以上是使用PyTorch读取CIFAR-10数据集的基本步骤,你可以根据需要进一步处理数据和构建模型进行训练和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值