cifar-10 数据集说明及下载
数据集组成
本数据及包含了6万张分辨率为32x32的图片,一共分为了10类,分别为:
- 飞机
- 汽车
- 鸟
- 猫
- 鹿
- 狗
- 青蛙
- 马
- 船
- 货车
其中,5万张作为训练集,1万张作为测试机。
训练集被分为了5批训练和1批测试。每一批都是1万张。
- 测试集是从每一种分类中随机抽取出来1000张组成。
- 训练集从10个分类中各自随机抽取5000张,一共5万张。
下载
国内环境下载太慢了,而且官方提供的那个sh
脚本还只能使用linux
运行, 因此这里放出在CSDN
上的下载链接:
点击这里跳转下载链接
使用
权威结果
说是权威也不能这么说,只是官方给出的一个基准结果,可以使用这些作为参照:
结果列表。
这些都是用卷积神经网络做出来的,简要地说,如果没有数据增强,错误率为18%,有的话错误率为11%。
另外 Jasper Snoek在 这篇文章里使用了贝叶斯超参数最优化技巧,使之能够找到权重的最佳值以及其他超参数,经过这样的处理,在不使用数据增强的情况下, 他的错误率也降低到了15%。
数据的结构
首先看一下数据集解压之后的样子:
那些没有后缀名的文件,其实都是用python的cpickle
库打包好的,这个库就是用来将python中的变量原封不动地存到本地使用的,当再次使用的时候,可以读取出来。
有经验的朋友会自动和json.dumps
联系起来,其实json
模块只能保存一个字典到本地的json文件,而pickle
模块(或者cpickle
却可以打包任何对象).
在python3
环境下读取数据:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
这样不就得到了一个字典文件了吗?
每个字典如下表所示:
键 | 值 |
---|---|
data | 一个10000x3072的numpy数组,每一行都存储着一个分辨率为32x32的图片 |
labels | 标签,长度是10000,每个都是0-9的数字,是一个列表。其索引和data里面的索引相互对应。 |
除此之外还有一个文件是batches.meta
,这个文件保存的就是索引与名字之间的对应。如:label_names[0] == “airplane”, label_names[1] == “automobile”