CIFAR-10 dataset 的下载与使用

Posted klausage

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CIFAR-10 dataset 的下载与使用相关的知识,希望对你有一定的参考价值。

 

基本信息

CIFAR-10 是一个包含60000张图片的数据集。其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围 0 ~ 255。

所有照片分属10个不同的类别,分别是 ‘airplane‘, ‘automobile‘, ‘bird‘, ‘cat‘, ‘deer‘, ‘dog‘, ‘frog‘, ‘horse‘, ‘ship‘, ‘truck‘

其中五万张图片被划分为训练集,剩下的一万张图片属于测试集。

下载数据集

打开下面的链接进入官网下载

http://www.cs.toronto.edu/~kriz/cifar.html

技术图片

下载完成后先解压缩,之后会得到如下几个文件

技术图片

data_batch_1 ~ data_batch_5 是划分好的训练数据,每个文件里包含10000张图片,test_batch 是测试集数据,也包含10000张图片。他们的结构是一样的,下面就用 data_batch_1 作为例子进行说明。

读取数据

技术图片
import pickle

def load_file(filename):
    with open(filename, rb) as fo:
        data = pickle.load(fo, encoding=latin1)
    return data
技术图片

首先定义读取数据的函数,这几个文件都是通过 pickle 产生的,所以在读取的时候也要用到这个包。

这里面返回的data是一个字典,先看看这个字典里面有哪些键吧。

data = load_file(test_batch)
print(data.keys())

输出结果

1
dict_keys([‘batch_label‘‘labels‘‘data‘‘filenames‘])
  • batch_label 

  对应的值是一个字符串,用来表明当前文件的一些基本信息。  

  如果是 data_batch_1 这个文件,里面的值就是

training batch 1 of 5

  如果是 test_batch 这个文件,里面的值就是

testing batch 1 of 1
  • labels

  对应的值是一个长度为10000的列表,每个数字取值范围 0~9,代表当前图片所属类别

  • data

  10000 * 3072 的二维数组,每一行代表一张图片的像素值。(32*32*3=3072)

  • filenames

  长度为10000的列表,里面每一项是代表图片文件名的字符串。


 

batches.meta 文件可以用相同的方法读取,里面存的是一些基本信息。

  • num_cases_per_batch

  10000

  • label_names
[‘airplane‘, ‘automobile‘, ‘bird‘, ‘cat‘, ‘deer‘, ‘dog‘, ‘frog‘, ‘horse‘, ‘ship‘, ‘truck‘]
  • num_vis

  3072

以上是关于CIFAR-10 dataset 的下载与使用的主要内容,如果未能解决你的问题,请参考以下文章

win10系统anaconda的notebook的cifar10离线下载数据加载及CNN训练

从 cifar-10 数据集加载图像

创建与 cifar-10 数据集格式相同的数据集

深度学习——用简单的线性模型构建识别鸟与飞机模型

无法加载 CIFAR-10 数据集:加载键“\x1f”无效

学习笔记《pytorch 入门》完整的模型训练套路(CIFAR10 model)