iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中关于CIFAR10数据集的使用
  • 795
分享到

python中关于CIFAR10数据集的使用

pythonCIFAR10数据集CIFAR10数据集的使用CIFAR10数据集 2023-02-01 18:02:56 795人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录关于CIFAR10数据集的使用CIFAR10的官方解释实战操作CIFAR-10 数据集简介数据集版本数据集布置总结关于CIFAR10数据集的使用 主要解决了如何把数据集与tran

关于CIFAR10数据集的使用

主要解决了如何把数据集与transfORMs结合在一起的问题。

CIFAR10的官方解释

torchvision.datasets.CIFAR10(
root: str, 
train: bool = True, 
transform: Optional[Callable] = None,
target_transform: Optional[Callable] = None,
download: bool = False)

注释:

  • root (string)存在 cifar-10-batches-py 目录的数据集的根目录,如果下载设置为 True,则将保存到该目录。
  • train (bool, optional)如果为True,则从训练集创建数据集, 如果为False,从测试集创建数据集。
  • transform (callable, optional)它接受一个 PIL 图像并返回一个转换后的版本。 例如,transforms.RandomCrop/transforms.ToTensor
  • target_transform (callable, optional) 接收目标并对其进行转换的函数/转换。
  • download (bool, optional)如果为 true,则从 Internet 下载数据集并将其放在根目录中。 如果数据集已经下载,则不会再次下载。

实战操作

1.CIAFR10数据集的下载

代码如下:

import torchvision   #导入torchvision这个类

train_set = torchvision.datasets.CIFAR10(root = "./dataset", train = True, 
download= True)  #从训练集创建数据集
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False,
 download=True)    #从测试集创建数据集

root = "./dataset",将下载的数据集保存在这个文件夹下;download= True,从 Internet 下载数据集并将其放在根目录中,这里就是在相对路径中,创建dataset文件夹,将数据集保存在dataset中。

2.查看下载的CIAFR10数据集

运行程序,开始下载数据集。下载成功后,可以进行一些查看。代码如下:

接着输入:

print(train_set[0])  #查看train_set训练集中的第一个数据
print(train_set.classes)   #查看train_set训练集中有多少个类别
 
img, target = train_set[0]
print(img)
print(target)
print(train_set.classes[target])
img.show()  #显示图片

输出结果:

(<PIL.Image.Image image mode=RGB size=32x32 at 0x161E924B8D0>, 6)
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship',
'truck']
<PIL.Image.Image image mode=RGB size=32x32 at 0x161E924B710>
6
frog

注释:可以看见,train_set数据集中有10个类别,train_set中第0个元素的target是6,也就是说,这个元素是属于第7个类别frog的。

3.数据转换

因为这些图片类型都是PIL Image,如果要供给PyTorch使用的话,需要将数据全都转化成tensor类型。

完整代码如下:

import torchvision   #导入torchvision这个类
from torch.utils.tensorboard import SummaryWriter

from torchvision import transforms
dataset_transforms = transforms.ToTensor()

# dataset_transforms = torchvision.transforms.Compose([
#     torchvision.transforms.ToTensor()
# ])    第3  4 行代码可以用compose直接写
train_set = torchvision.datasets.CIFAR10(root = "./dataset", train = True, transform=dataset_transforms, download= True) #训练集
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=dataset_transforms, download=True)   #测试集

writer = SummaryWriter("logs")

# print(train_set[0])  #查看train_set训练集中的第一个数据
# print(train_set.classes)   #查看train_set训练集中有多少个类别

# img, target = train_set[0]
# print(img)
# print(target)
# print(train_set.classes[target])
# img.show()
for i in range(20):
    img, target = train_set[i]
    writer.add_image("cifar10_test2", img, i)

writer.close()

小结:CIFAR10数据集内存很小,只有100多m,下载方便。对我们学习数据集非常友好,练习的时候,我们可以使用SummaryWriter来将数据写入tensorboard中。

CIFAR-10 数据集简介

复现代码的过程中,简单了解了作者使用的数据集CIFAR-10 dataset ,简单记录一下。

CIFAR-10数据集是8000万微小图片的标签子集,它的收集者是:Alex Krizhevsky, Vinod Nair, Geoffrey Hinton。

数据集由6万张32*32的彩色图片组成,一共有10个类别。每个类别6000张图片。其中有5万张训练图片及1万张测试图片。

数据集被划分为5个训练块和1个测试块,每个块1万张图片。

测试块包含了1000张从每个类别中随机选择的图片。训练块包含随机的剩余图像,但某些训练块可能对于一个类别的包含多于其他类别,训练块包含来自各个类别的5000张图片。

这些类是完全互斥的,及在一个类别中出现的图片不会出现在其它类中。

数据集版本

作者提供了3个版本的数据集:python version; Matlab version; binary version。

可根据自己的需求选择。

数据集下载地址:下载链接

数据集布置

Python version进行介绍,Matlab version与之相同。

下载后获得文件 data_batch_1, data_batch_2,…, data_batch_5。测试块相同。这些文件中的每一个都是用cPickle生成的python pickled对象。

具体使用方法:

def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

返回字典类,每个块的文件包含一个字典类,包含以下元素:

  • data: 一个100003072的numpy数组(unit8)每个行存储3232的彩色图片,3072=1024*3,分别是red, green, blue。存储方式以行为主。
  • labels:使用0-9进行索引

数据集包含的另一个文件batches.meta同样包含python字典,用于加载label_names。如:label_names[0] == “airplane”, label_names[1] == “automobile”

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: python中关于CIFAR10数据集的使用

本文链接: https://www.lsjlt.com/news/193894.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中关于CIFAR10数据集的使用
    目录关于CIFAR10数据集的使用CIFAR10的官方解释实战操作CIFAR-10 数据集简介数据集版本数据集布置总结关于CIFAR10数据集的使用 主要解决了如何把数据集与tran...
    99+
    2023-02-01
    python CIFAR10数据集 CIFAR10数据集的使用 CIFAR10数据集
  • python中如何使用CIFAR10数据集
    这篇“python中如何使用CIFAR10数据集”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中如何使用CIFA...
    99+
    2023-07-05
  • 【Python机器学习】实验15 将Lenet5应用于Cifar10数据集
    文章目录 CIFAR10数据集介绍1. 数据的下载2.修改模型与前面的参数设置保持一致3. 新建模型4. 从数据集中分批量读取数据5. 定义损失函数6. 定义优化器7. 开始训练8.测试模型 ...
    99+
    2023-09-04
    python 机器学习 pytorch
  • Python中关于数据采集和解析是怎样的
    本篇文章为大家展示了Python中关于数据采集和解析是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术...
    99+
    2023-06-02
  • 关于python中map函数的使用
    1. 概念 map函数也是python中的一个内置函数,用法同之前讲过的filter函数类似。map在这里的意思是映射的意思,会根据提供的函数对指定序列做映射。 map函数会返回一个...
    99+
    2023-05-16
    python map python map函数
  • Python中关于集合的介绍及用法
    一、集合的含义及创建方法 集合(set)是一种无序的并且里面存放不同元素的序列。 集合可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 创...
    99+
    2023-01-30
    Python
  • python中关于xmltodict的使用
    目录python中xmltodict使用xml转换成OrderedDictdict转换成xmlxmltodict模块处理xml数据基本用法1. parse2. unparse总结py...
    99+
    2023-03-14
    python xmltodict python xmltodict使用 python使用xmltodict
  • Java数据机构中关于并查集的详解
    目录概念实现初始化并查集判断是不是同一个组查找当前节点的代表节点合并操作 本期文章源码:GitHub 一文彻底搞懂《并查集》! 概念 并查集是一种树型的数据结构,用于处理一些不相交集...
    99+
    2022-11-12
  • 关于Python中Math库的使用
    目录Math 库概述第一种: import math 对 math 库中函数采用 math.<b>() 形式使用第二种: from math import <函数名...
    99+
    2023-05-15
    Python math math库
  • 关于Python中jieba库的使用
    目录jieba库概述jieba 库演示在 PyCharm 中添加 jieba 库使用jieba 库第三方库jieba库概述 jieba 库演示 对于一段英文文本, 例如 &ldquo...
    99+
    2023-05-15
    Python jieba jieba库
  • 关于python中.xpath的使用问题
    在python中使用xpath定位时,有时候会先用.xpath定位到一个地点,for循环后,继续使用.xpath,但是会出现问题,比如在下面这个例子中:    根...
    99+
    2022-11-12
  • Python中关于集合的介绍及用法是什么
    这期内容当中小编将会给大家带来有关Python中关于集合的介绍及用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  一、集合的含义及创建方法  集合(s...
    99+
    2022-10-18
  • 关于Python数据结构中字典的心得
    本篇主要介绍:常见的字典方法、如何处理查不到的键、标准库中 dict 类型的变种、散列表的工作原理等。一下是全部内容: 泛映射类型 collections.abc 模块中有 Mapping 和 Mutabl...
    99+
    2022-06-04
    数据结构 字典 心得
  • 关于使用python对mongo多线程更新数据
    1、方法一 在使用多线程更新 MongoDB 数据时,需要注意以下几个方面: 确认您的数据库驱动程序是否支持多线程。在 PyMongo 中,默认情况下,其内部已经实现了线程安全。将分...
    99+
    2023-05-16
    python多线程更新 python更新数据 mongo多线程更新数据
  • Python中关于property使用的小技巧
    目录property属性具体实例property属性的有两种方式装饰器方式旧式类新式类类属性方式property对象与@property装饰器对比property对象类属性@prop...
    99+
    2022-11-12
  • Python中基于天气数据集XGBoost的示例分析
    这篇文章将为大家详细讲解有关Python中基于天气数据集XGBoost的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、XGBoostXGBoost并不是一种模型,而是一个可供用户轻松解决分类、...
    99+
    2023-06-26
  • 关于vue3中setup函数的使用
    概述  一、 初识setup函数  组件中所用到的:数据、方法等等均要配置在setup中,这也就意味着在Vue2中写的data、methods在这里都不再推荐使...
    99+
    2022-11-13
  • pytorch中关于distributedsampler函数的使用
    目录关于distributedsampler函数的使用1.如何使用这个分布式采样器2.关于用不用这个采样器的区别总结关于distributedsampler函数的使用 1.如何使用这...
    99+
    2023-02-02
    pytorch distributedsampler distributedsampler函数 pytorch使用distributedsampler
  • 关于python中range()的参数问题
    目录range()的参数问题当参数只有一个时range(n)当参数有两个时range(x,y)当参数有三个时range(i,j,k)range(1,2)函数只有两个参数时语法rang...
    99+
    2022-11-11
  • 关于python中逆序的三位数
    目录python逆序的三位数思路Python三位数逆序输出基础方法1.利用切片操作2.利用for循环3.数学方法4.字符串的“索引”+“连接&rd...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作