基本信息
CIFAR-10 是一個包含60000張圖片的數據集。其中每張照片為32*32的彩色照片,每個像素點包括RGB三個數值,數值范圍 0 ~ 255。
所有照片分屬10個不同的類別,分別是 'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'
其中五萬張圖片被划分為訓練集,剩下的一萬張圖片屬於測試集。
下載數據集
打開下面的鏈接進入官網下載
http://www.cs.toronto.edu/~kriz/cifar.html
下載完成后先解壓縮,之后會得到如下幾個文件
data_batch_1 ~ data_batch_5 是划分好的訓練數據,每個文件里包含10000張圖片,test_batch 是測試集數據,也包含10000張圖片。他們的結構是一樣的,下面就用 data_batch_1 作為例子進行說明。
讀取數據
import pickle def load_file(filename): with open(filename, 'rb') as fo: data = pickle.load(fo, encoding='latin1') return data
首先定義讀取數據的函數,這幾個文件都是通過 pickle 產生的,所以在讀取的時候也要用到這個包。
這里面返回的data是一個字典,先看看這個字典里面有哪些鍵吧。
data = load_file('test_batch') print(data.keys())
輸出結果
1
|
dict_keys([
'batch_label'
,
'labels'
,
'data'
,
'filenames'
])
|
- batch_label
對應的值是一個字符串,用來表明當前文件的一些基本信息。
如果是 data_batch_1 這個文件,里面的值就是
training batch 1 of 5
如果是 test_batch 這個文件,里面的值就是
testing batch 1 of 1
- labels
對應的值是一個長度為10000的列表,每個數字取值范圍 0~9,代表當前圖片所屬類別
- data
10000 * 3072 的二維數組,每一行代表一張圖片的像素值。(32*32*3=3072)
- filenames
長度為10000的列表,里面每一項是代表圖片文件名的字符串。
batches.meta 文件可以用相同的方法讀取,里面存的是一些基本信息。
- num_cases_per_batch
10000
- label_names
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
- num_vis
3072