CIFAR 10資料集讀取

2022-08-23 07:09:09 字數 1491 閱讀 5221

參考:

1、使用讀取方式pickle

def unpickle(file):

import pickle

with open(file, 'rb') as fo:

dict = pickle.load(fo, encoding='bytes')

return dict

返回的是乙個python字典

2、通過字典的內建函式,獲取鍵值

>>> dict.keys()

dict_keys([b'labels', b'batch_label', b'data', b'filenames'])

3、列印所有鍵值對應的值

>>> dict[b'labels']------------------對應的是每個的真實結果y,通過batches.meta可以找出對應的字元結果,比如:0表示『airplane』

[6, 9, 9, 4, 1, 1, 2, 7, 8, 3, 4, 7, 7, 2, 9, 9, 9, 3, ............. 9, 1, 1, 5](結果省略了一些)

>>> len(dict[b'labels'])-----------代表的結果數量確實為10000

10000

>>> dict[b'batch_label']------------對應當前資料集是訓練集中的那乙份

b'training batch 1 of 5'

>>> dict[b'filenames']---------------對應資料集中每張的檔名

[b'leptodactylus_pentadactylus_s_000004.png', b'camion_s_000148.png', b'tipper_truck_s_001250.png', b'american_elk_s_001521.png',......... b'estate_car_s_001433.png', b'cur_s_000170.png'](結果同樣省略了一些)

>>> dict[b'data']----------------每張的資料,每一位型別為uint8

array([[ 59,  43,  50, ..., 140,  84,  72],

[154, 126, 105, ..., 139, 142, 144],

[255, 253, 253, ...,  83,  83,  84],

...,

[ 71,  60,  74, ...,  68,  69,  68],

[250, 254, 211, ..., 215, 255, 254],

[ 62,  61,  60, ..., 130, 130, 131]], dtype=uint8)

>>> dict[b'data'].shape----------由於我們需要用影象資料來進行卷積,所以需要知道shape

(10000, 3072)(代表有10000張,每張3072b大小(32 x 32 x 3),前1024是red通道的data,接著是green通道的1024,之後是blue通道的1024)

cifar10資料的讀取

cifar10資料集檔案結構如圖所示,其中data batch 1 5.bin是訓練集,每個檔案包含10000個樣本,test batch.bin是測試集,包含10000個樣本。開啟任意乙個檔案,發現是一堆二進位制資料,其中乙個樣本由3037個位元組組成,其中第乙個位元組是label,剩餘3036 ...

資料集處理 CIFAR10

transform transforms.compose transforms.totensor transforms.normalize 0.5,0.5,0.5 0.5,0.5,0.5 trainset torchvision.datasets.cifar10 root cifar10 train...

Pytorch實現CIFAR 10資料集

練習pytorch,做個記錄。寫的有點亂 import torch import torchvision import torch.nn as nn from torchvision import transforms from torch.utils.data.dataloader import ...