读取cifar数据集
读取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数据集相关推荐
- 导入并显示CIFAR数据集
一 实例描述 通过import cifar10_input来导入CIFAR数据集. 二 代码 import cifar10_input import tensorflow as tf import p ...
- cifar数据集介绍及到图像转换的实现
CIFAR是一个用于普通物体识别的数据集.CIFAR数据集分为两种:CIFAR-10和CIFAR-100.The CIFAR-10 and CIFAR-100 are labeled subsets ...
- 利用TinyXML读取VOC2012数据集的XML标注文件裁剪出所有人体目标保存为文件
转载自:利用TinyXML读取VOC2012数据集的XML标注文件裁剪出所有人体目标保存为文件 - Why So Serious? - 博客频道 - CSDN.NET http://blog.csd ...
- DCMTK:读取DICOM数据集的测试程序
DCMTK:读取DICOM数据集的测试程序 读取DICOM数据集的测试程序 读取DICOM数据集的测试程序 #include "dcmtk/config/osconfig.h" # ...
- TensorFlow读取MNIST数据集错误的问题
TensorFlow读取mnist数据集错误的问题 运行程序出现"URLError"错误的问题 可能是服务器或路径的原因,可以自行下载数据集后,将数据集放到代码所在的文件夹下,并将 ...
- 【收集】ADOADO.NET 读取 Oracle 数据集
开始尝试用存储过程读取Oracle 数据集,收集了一些文章,基本上都来自MSDN: 使用 ADO.NET 访问 Oracle 9i 存储过程 http://www.microsoft.com/chin ...
- 《pytorch》对CIFAR数据集的分类
今天复习了下pytorch,又看了下它的一个实例,复习了下对CIFAR数据集的分类. 学习链接:https://zhuanlan.zhihu.com/p/39667289 直接上源码,注释均在其中 i ...
- PFM格式图像和读取middlebury 数据集
PFM格式图像和读取middlebury 数据集 PFM格式图像 图像格式 Middlebury 2014数据集 数据集介绍 读取Middlebury数据集中视差图生成depth map PFM格式图 ...
- Python读取MNIST数据集
MNIST数据集下载地址:http://yann.lecun.com/exdb/mnist/ 读取MINST数据集第一张图像并显示 # coding=utf-8 import numpy as np ...
最新文章
- putty或xshell上用vi/vim小键盘无法使用的解决方法
- 微服务之旅:从 Netflix OSS 到 Istio Service Mesh
- POJ1018贪心(多路归并的想法)
- 电脑编程python老是出现错误_python常见的编程错误
- mysql创建表示对属性进行说明_mysql基础
- 如何得到别人的上网帐号和密码
- 电商行业最复杂的人货场分析,我用一个案例给你讲清楚
- SAP License:工程质保金业务
- API安全风险与防范
- 头像制作软件有哪些?2022微信头像制作软件推荐
- vue+i18n 切换语言后无法刷新数据 的 解决方案
- 从未在一起更让人遗憾_从未在一起和最终没有在一起哪个更遗憾
- 网易邮箱无法验证服务器身份,我的网易邮箱163无法验证是怎么回事?
- netgen.5.0.0下载地址与Windows下编译方法
- 智能音箱里小度、小爱、天猫精灵哪个更加好?(上)
- 徒手撸一个好玩的App:美图
- CC00009.python——|HadoopPython.v09|——|Arithmetic.v09|语法:核心语法运算符.V1|
- Visual Stuido 2005 VSTS Developer Edition 的小虫
- 微信小程序支付功能用服务器吗,微信小程序 支付功能 服务器端(TP5.1)实现...
- 自动更换Termux的源,加快软件包下载速度笔记