CIFAR-10数据集目录结构以及数据组织格式

返回目录:总目录——深度学习代码实战

关于CIFAR数据集的基本信息就不详细介绍了.在官网上下载很慢,这里特意上传了一份:
下载链接:cifar-10-batches-py
这里主要介绍一下这个数据集的目录结构以及内部数据组织格式.

import pickle
import  numpy as np
import os
# 目录
CIFAR_DIR = "./cifar-10-batches-py"

print(os.listdir(CIFAR_DIR))
'''
输出:
    ['batches.meta', 'test_batch', 'data_batch_5', 'data_batch_3', 'data_batch_2', 'data_batch_4', 'readme.html', 'data_batch_1']
这是目录下的所有文件
'''

with open(os.path.join(CIFAR_DIR, 'data_batch_1'), 'rb') as f:
    data = pickle.load(f, encoding='bytes') # python3 需要添加 encoding='bytes'
    print(type(data)) # 输出 
    print(data.keys()) # 输出 dict_keys([b'filenames', b'data', b'labels', b'batch_label'])

    print(type(data[b'data'])) # 输出 
    print(data[b'data'].shape) # 输出 (10000, 3072) 说明有 10000 个样本, 3072个特征

    print(data[b'data'][0:3])
    print(data[b'labels'][:2])
    '''
        [[ 59  43  50 ... 140  84  72]
         [154 126 105 ... 139 142 144]
         [255 253 253 ...  83  83  84]]
         二维矩阵,每一行是一个特征
        [6, 9] 标签值
        6代表第六个分类,9代表第九个分类
    '''
# 一个名字对应矩阵的一行

# 现在将一个行向量转化为一张图片,看看样子
image_arr = data[b'data'][101] # 拿出 第 101 个样本
image_arr = image_arr.reshape((3, 32, 32)) # 将一个一维向量改变形状,目的是得到这样一个元组:(高,宽,通道数)
image_arr = image_arr.transpose((1, 2, 0)) # 将上一行的元组变为我们需要的样子,第一个元素放到最后
import matplotlib.pyplot as plt
plt.imshow(image_arr) # 将图片输出
plt.show()

最后输出的图像:
CIFAR-10数据集目录结构以及数据组织格式_第1张图片
这应该是一辆卡车,因为数据集都是32*32,所以放大之后会有马赛克.

你可能感兴趣的:(tensorflow,Tensorflow学习笔记)