文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python中关于CIFAR10数据集的使用

2023-02-01 18:01

关注

关于CIFAR10数据集的使用

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

CIFAR10的官方解释

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

注释:

实战操作

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

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

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

总结

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯