Numpy学习(2):将cifar10/100数据文件读入到python数据结构(字典)中

前言:

cifar10,cifar100是2个比较常用的图像分类数据库,官网地址,从官网下载的数据已经不是原始图片啦,而是经过数值化的numpy数组。那么这些数组究竟是什么样的?如果有一个直观的感受,以后不管是用机器学习算法还是深度学习算法,对于算法的理解都很有帮助。


下面这段代码详细说明了图片数据是怎样一个存储方式,下面代码使用python3.x版本以及pickle的库,跑出来结果一目了然。


正文

闲话少说,请看代码:

'''
    首先把官网的python版本数据下载保存到本地
'''
file1 = 'E:/pythonProjects/dataSets/cifar-10-batches-py/data_batch_1'
file2 = 'E:/pythonProjects/dataSets/cifar-10-batches-py/batches.meta'
file3 = 'E:/pythonProjects/dataSets/cifar-10-batches-py/test_batch'


def unpickle(file):  # 该函数将cifar10提供的文件读取到python的数据结构(字典)中
    import pickle
    fo = open(file, 'rb')
    dict = pickle.load(fo,encoding='iso-8859-1')
    fo.close()
    return dict

dict_train_batch1 = unpickle(file1) # 将data_batch文件读入到数据结构(字典)中

print(dict_train_batch1) # 每个batch是一个字典
print(dict_train_batch1.keys())  # 字典里有4组键值对

'''
    trainSet字典里有4组键值对
    1,batch_label :表明batch的位置,没什么用
    2,data :32*32图片的数值化数组,是一个10000*3072的numpy二维数组,
              每一行代表一张图片,一行分3段(红绿蓝色道),每段1024个元素。
    3,labels :data每一行对应的标签(数字0-9),是个一维数组,10000个元素
    4,filenames : data每一行对应的文件名,同是一个一维数组,10000个元素
'''
data_train_batch1 = dict_train_batch1.get('data') # 字典中取data
print(data_train_batch1)

labels = dict_train_batch1.get('labels') # 字典中取labels
print(labels)

filenames = dict_train_batch1.get('filenames') # 字典中取filenames
print(filenames)


print('--------------我是分割线---------------------------------')


dict_test_batch = unpickle(file3)
print(dict_test_batch)
print(dict_test_batch.keys())
'''
    跟trainSet中一样,testSet中有相同的4组键值对
    说明同上
'''

print('--------------我是分割线---------------------------------')


'''
    batches.meta是一个字典,其中包含了一个列表,列表中是10种分类的具体名称
    一般这个文件用不到
'''
dict_meta_batch = unpickle(file2)
print(dict_meta_batch)




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值