前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cifar-10数据集解析

Cifar-10数据集解析

作者头像
锦小年
发布2019-05-28 18:18:29
1.5K0
发布2019-05-28 18:18:29
举报
文章被收录于专栏:锦小年的博客锦小年的博客

cifar-10 数据集是机器学习入门第二个使用到的数据集合(第一个当然是MNIST),下面介绍一下如何解析。

1. cifar-10 简介

该数据集共有60000张彩色图像,图像大小是3通道的32*32,分为10个类,每类6000张图。这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批。测试批的数据里,取自10类中的每一类,每一类随机取1000张。抽剩下的就随机排列组成了训练批。注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一类都有5000张图。 数据的下载:共有三个版本,python,matlab,binary version 适用于C语言 python: http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz

MATLAB: http://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz

bin: http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz

2. 数据解析,Python为例

cifar-10 数据以字典的形式存储,key为:dict_keys([b’batch_label’, b’labels’, b’data’, b’filenames’]),也就是说包含四个内容: batch_label,标签,图像数据,图片对应的文件名。通过一下函数加载:

代码语言:javascript
复制
def unPickle(file):
    import pickle as pk
    with open(file, 'rb') as f:
    d = pk.load(f, encoding='bytes')
    return d

得到数据:

代码语言:javascript
复制
data = unPickle('data_batch_1')
img = data[b'data']
img.shape  # 显示为(10000,3072)

由于是3通道32*32的彩色图像,故每个图像大小为32*32*3=3072

3. 重建图像

将数组重建为彩色图像:

代码语言:javascript
复制
img_0 = img[0] #得到第一张图像
img_reshape = img_0.reshape(3,32,32)
import PIL.Image as image
import matplotlib.pyplot as plt
r = image.fromarray(img_reshape[0]).convert('L')
g = image.fromarray(img_reshape[1]).convert('L')
b = image.fromarray(img_reshape[2]).convert('L')
img_m = image.merge('RGB',(r,g,b))
plt.imshow(img_m)
plt.show()

重要说明

原数据是以数组存储,在应用中需要数据为什么形式(数据还是rgb图像)根据需求决定。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. cifar-10 简介
  • 2. 数据解析,Python为例
  • 3. 重建图像
  • 重要说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档