练手用的mnist和cifar10 数据集

 百度云链接:https://pan.baidu.com/s/1KGVwv36Y121TWZ1XrY1o3w 
提取码:rqep 
 

取自 小蚂蚁博客

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()

 

你可能感兴趣的:(练手用的mnist和cifar10 数据集)