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