读取cifar数据集

在学习深度学习的过程中必须要用到数据集对模型进行训练,本文主要介绍如何读取cifar数据集。
cifar数据集的下载地址为:CIFAR官网,下载速度较慢
百度云下载地址为:百度云下载地址
下载好后解开压缩包。
1.用python3来读取cifar文件

   import pickledef unpickle(self,f):fo = open(f, 'rb')d = pickle.load(fo,encoding='latin1')fo.close()return d

此时读取的文件是一个字典,你可以查看关键字

print(d.key())

然后,根据关键字将有用的信息提取出来

data = d['data']
labels = d['labels']

读取后的data数据并不是一张张32323的图片,需要进行转换,如下。

new = data.reshape(10000,3,32,32)
#将[10000][3][32][32]转为[10000][32][32][3]
imgs = new.transpose((0,2,3,1))

此时可以作为机器学习的输入数据了。来看看图片是什么样的吧!

import matplotlib.pyplot as plt
plt.imshow(pic_test[1000])
plt.legend()
plt.show()

附上一个比较完整的代码(在python3上运行)

# -*- coding: utf-8 -*-
"""
Created on Wed Sep  4 20:21:56 2019@author: ASUS
"""import pickle
import numpy as np
import osclass Cifar10DataReader():def __init__(self,cifar_folder,onehot=True):self.cifar_folder=cifar_folderself.onehot=onehotself.data_index=1self.read_next=Trueself.data_label_train=Noneself.data_label_test=Noneself.batch_index=0def unpickle(self,f):fo = open(f, 'rb')d = pickle.load(fo,encoding='latin1')fo.close()return ddef next_train_data(self,batch_size=100):assert 10000%batch_size==0,"10000%batch_size!=0"rdata=Nonerlabel=Noneif self.read_next:f=os.path.join(self.cifar_folder,"data_batch_%s"%(self.data_index))#print 'read: %s'%fdic_train=self.unpickle(f)self.data_label_train=list(zip(dic_train['data'],dic_train['labels']))#label 0~9np.random.shuffle(self.data_label_train)self.read_next=Falseif self.data_index==5:self.data_index=1else: self.data_index+=1if self.batch_index<len(self.data_label_train)//batch_size:#print self.batch_indexdatum=self.data_label_train[self.batch_index*batch_size:(self.batch_index+1)*batch_size]self.batch_index+=1rdata,rlabel=self._decode(datum,self.onehot)else:self.batch_index=0self.read_next=Truereturn self.next_train_data(batch_size=batch_size)return rdata,rlabeldef _decode(self,datum,onehot):rdata=list();rlabel=list()if onehot:for d,l in datum:rdata.append(np.reshape(np.reshape(d,[3,1024]).T,[32,32,3]))hot=np.zeros(10)hot[int(l)]=1rlabel.append(hot)else:for d,l in datum:rdata.append(np.reshape(np.reshape(d,[3,1024]).T,[32,32,3]))rlabel.append(int(l))return rdata,rlabeldef next_test_data(self,batch_size=100):if self.data_label_test is None:f=os.path.join(self.cifar_folder,"test_batch")#print 'read: %s'%fdic_test=self.unpickle(f)data=dic_test['data']labels=dic_test['labels']#0~9self.data_label_test=list(zip(data,labels))np.random.shuffle(self.data_label_test)datum=self.data_label_test[0:batch_size]return self._decode(datum,self.onehot)if __name__=="__main__":dr=Cifar10DataReader(cifar_folder="./cifar-10-batches-py/")import matplotlib.pyplot as pltd,l=dr.next_test_data()print (np.shape(d),np.shape(l))plt.imshow(d[0])plt.show()for i in range(600):d,l=dr.next_train_data(batch_size=100)print (np.shape(d),np.shape(l))

读取cifar数据集相关推荐

  1. 导入并显示CIFAR数据集

    一 实例描述 通过import cifar10_input来导入CIFAR数据集. 二 代码 import cifar10_input import tensorflow as tf import p ...

  2. cifar数据集介绍及到图像转换的实现

    CIFAR是一个用于普通物体识别的数据集.CIFAR数据集分为两种:CIFAR-10和CIFAR-100.The CIFAR-10 and CIFAR-100 are labeled subsets ...

  3. 利用TinyXML读取VOC2012数据集的XML标注文件裁剪出所有人体目标保存为文件

    转载自:利用TinyXML读取VOC2012数据集的XML标注文件裁剪出所有人体目标保存为文件 - Why So Serious? - 博客频道 - CSDN.NET  http://blog.csd ...

  4. DCMTK:读取DICOM数据集的测试程序

    DCMTK:读取DICOM数据集的测试程序 读取DICOM数据集的测试程序 读取DICOM数据集的测试程序 #include "dcmtk/config/osconfig.h" # ...

  5. TensorFlow读取MNIST数据集错误的问题

    TensorFlow读取mnist数据集错误的问题 运行程序出现"URLError"错误的问题 可能是服务器或路径的原因,可以自行下载数据集后,将数据集放到代码所在的文件夹下,并将 ...

  6. 【收集】ADOADO.NET 读取 Oracle 数据集

    开始尝试用存储过程读取Oracle 数据集,收集了一些文章,基本上都来自MSDN: 使用 ADO.NET 访问 Oracle 9i 存储过程 http://www.microsoft.com/chin ...

  7. 《pytorch》对CIFAR数据集的分类

    今天复习了下pytorch,又看了下它的一个实例,复习了下对CIFAR数据集的分类. 学习链接:https://zhuanlan.zhihu.com/p/39667289 直接上源码,注释均在其中 i ...

  8. PFM格式图像和读取middlebury 数据集

    PFM格式图像和读取middlebury 数据集 PFM格式图像 图像格式 Middlebury 2014数据集 数据集介绍 读取Middlebury数据集中视差图生成depth map PFM格式图 ...

  9. Python读取MNIST数据集

    MNIST数据集下载地址:http://yann.lecun.com/exdb/mnist/ 读取MINST数据集第一张图像并显示 # coding=utf-8 import numpy as np ...

最新文章

  1. putty或xshell上用vi/vim小键盘无法使用的解决方法
  2. 微服务之旅:从 Netflix OSS 到 Istio Service Mesh
  3. POJ1018贪心(多路归并的想法)
  4. 电脑编程python老是出现错误_python常见的编程错误
  5. mysql创建表示对属性进行说明_mysql基础
  6. 如何得到别人的上网帐号和密码
  7. 电商行业最复杂的人货场分析,我用一个案例给你讲清楚
  8. SAP License:工程质保金业务
  9. API安全风险与防范
  10. 头像制作软件有哪些?2022微信头像制作软件推荐
  11. vue+i18n 切换语言后无法刷新数据 的 解决方案
  12. 从未在一起更让人遗憾_从未在一起和最终没有在一起哪个更遗憾
  13. 网易邮箱无法验证服务器身份,我的网易邮箱163无法验证是怎么回事?
  14. netgen.5.0.0下载地址与Windows下编译方法
  15. 智能音箱里小度、小爱、天猫精灵哪个更加好?(上)
  16. 徒手撸一个好玩的App:美图
  17. CC00009.python——|HadoopPython.v09|——|Arithmetic.v09|语法:核心语法运算符.V1|
  18. Visual Stuido 2005 VSTS Developer Edition 的小虫
  19. 微信小程序支付功能用服务器吗,微信小程序 支付功能 服务器端(TP5.1)实现...
  20. 自动更换Termux的源,加快软件包下载速度笔记

热门文章

  1. 专题测试05·二重积分【李艳芳全程班】
  2. 东南大学与北航计算机学院,学科评估最大的赢家,有望入选双一流,有你所在的学校吗...
  3. 封装js发送http请求
  4. 图论-路径优化算法总结
  5. 图论算法:图论基础介绍
  6. python 实现开方
  7. 手机号码检测开通微信软件的使用案例(二)
  8. Java泛型02:自定义泛型类、泛型方法
  9. 耐火纤维棉的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 网页禁止复制粘贴怎么办?教你六招轻松完成