import pickle
import matplotlib.pyplot as plt
CIFAR_DIR ="cifar10_data/cifar-10-batches-bin/data_batch_1.bin"#数据集路径
with open(CIFAR_DIR , 'rb') as f:
data = pickle.load(f, encoding='bytes')
print('----------batch1的基本信息-------------')
print('data的数据类型:',type(data)) # 输出 <class 'dict'>
print('字典的key名称:',data.keys()) # 输出 dict_keys([b'filenames', b'data', b'labels', b'batch_label'])
print('bdata的数据类型',type(data[b'data'])) # 输出 <class 'numpy.ndarray'>
print('bdata的数据形状',data[b'data'].shape) # 输出 (10000, 3072) 说明有 10000 个样本, 3072个特征
index=4#打印第几张图片
print('-----------第%d张图片信息----------'%index)
print('filenames:',data[b'filenames'][index])
print('labels:',data[b'labels'][index])
print('batch_label:',data[b'batch_label'][index])
image_arr = data[b'data'][index] # 拿出 第 index 个样本
image_arr = image_arr.reshape((3, 32, 32)) # 将一维向量改变形状得到这样一个元组:(高,宽,通道数)
image_arr = image_arr.transpose((1, 2, 0))
plt.imshow(image_arr) # 输出图片
plt.savefig("cifar10_data/raw/%d.png"%index)#保存图片
plt.show()