Python读取CIFAR10数据集

初次接触机器学习,用到的第一个数据集就是CIFAR10。这是一个小型数据集。一共包含 10 个类别的 RGB 彩色图 片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。图片的尺寸为 32×32 ,数据集中一共有 50000 张训练图片和 10000 张测试图片。
从网站上下载好压缩包之后,解压是这样一个文件。data_bath_1到5是训练数据,test_bath是测试数据。

下面学习对这个数据集的简单处理。

import pickle
import numpy as np
import os
import matplotlib.pyplot as plt
from matplotlib.pyplot import imshow
CIFAR_DIR='e:/learn-spyder/cifar-10-batches-py'  #这个是CIFAR10文件目录,自行设定的
print(os.listdir(CIFAR_DIR))

首先是导入我们所需要的库,定义好CIFAR10文件所在的文件路径。
pickle:对python对象结构进行二进制序列化和反序列化的协议实现 。
os:操作系统接口模块。
matplotlib.pyplot:数据可视化 ,把数据显示成图形用的。
os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
此时print打印的结果就和上图显示的一样为:[‘batches.meta’, ‘data_batch_1’, ‘data_batch_2’, ‘data_batch_3’, ‘data_batch_4’, ‘data_batch_5’, ‘readme.html’, ‘test_batch’]

with open(os.path.join(CIFAR_DIR,'data_batch_2'),'rb') as f:img_dict=pickle.load(f,encoding='bytes')print(img_dict.keys())

with open()as f :常见的读写操作。 rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
os.path.join :把路径连接起来,运行结果就是 e:/learn-spyder/cifar-10-batches-py\data_batch_2也就是这次实验使用data_batch_2文件中的图片。
pickle.load函数是实现反序列化,将文件中的数据解析为一个python对象,说白了就是将CIFAR10提供的文件读取到Python的数据结构(字典)中,也就是把数据从硬盘中出来。返回的是一个字典类型,每一个键值对应一个value值。
这个时候print打印的结果为:
dict_keys([b’batch_label’, b’labels’, b’data’, b’filenames’])
我们也可以用print去查看每个键值对应的value值,加深对每个键值的理解

 print(img_dict[b'batch_label'])print(img_dict[b'labels'])print(img_dict[b'data'])print(img_dict[b'filenames'])

b’batch_label’:对应当前数据集是训练集中的那一份,打印结果为 b’training batch 2 of 5’
b’labels’:可以理解为每个图像的标签,我们可以在batches.meta可以找出对应的字符结果,比如飞机用0表示,打印结果为[1,6,6,8,8…]
b’data’:每张图片的数据,打印结果为:
[[ 35 27 25 … 169 168 168]
[ 20 20 18 … 111 97 51]
[116 115 155 … 18 84 124]

[127 139 155 … 197 192 191]
[190 200 208 … 163 182 192]
[177 174 182 … 119 127 136]]
b’filenames’:对应数据集中每张图片的文件名,打印结果为[b’auto_s_000241.png’, …]

for i in range(0,5):img=np.reshape(img_dict[b'data'][i],(3,32,32))img=img.transpose((1,2,0))imshow(img)plt.show()print(img_dict[b'filenames'][i])f.close()

for循环表示我们只显示前5个图片,先把b’date’中的图片数据转换成33232大小。此时img的输出是(channels,imagesize,imagesize) imshow()函数负责对图像进行处理,并显示其格式,但是不能显示图片。其后跟着plt.show()才能显示出来。 但请注意:plt.show()的输入格式为(imagesize,imagesize,channels),故需要通过转置transpose把(channels,imagesize,imagesize)转换成(imagesize,imagesize,channels)
f.close() 表示关闭文件。
再次说明一些 img=img.transpose((1,2,0)),表示专置,这里的0 1 2代表原本的位置,通过改变0 1 2的位置来改变维度。
到此为止,整个代码部分就讲解完啦,运行一下就会出现我们想看到的图片啦

Python读取CIFAR10数据集,附代码详解相关推荐

  1. BraTS数据集处理详解(附代码详解)

    代码参考:https://github.com/sinclairjang/3D-MRI-brain-tumor-segmentation-using-autoencoder-regularizatio ...

  2. 曲率高斯滤波去噪python实现(附代码详解)

    曲率高斯滤波去噪python实现(附代码详解) 曲率滤波的理论基础可以参考下曲率滤波的理论基础和应用,这篇博客介绍的思想完美的避开了一大堆数学公式,简直是我的福音,但还是要细看的,不然很容易忽略重点, ...

  3. python医学图像读取_对python读取CT医学图像的实例详解

    需要安装OpenCV和SimpleItk. SimpleItk比较简单,直接pip install SimpleItk即可. 代码如下: #coding:utf-8 import SimpleITK ...

  4. 数学建模二:TOPSIS法(优劣解距离法) 附代码详解

    数学建模二:TOPSIS法(优劣解距离法)附代码详解 TOPSIS法(优劣解距离法)用于评价类问题. 层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案.同时层次分析法也难以处理已 ...

  5. NLP【05】pytorch实现glove词向量(附代码详解)

    上一篇:NLP[04]tensorflow 实现Wordvec(附代码详解) 下一篇:NLP[06]RCNN原理及文本分类实战(附代码详解) 完整代码下载:https://github.com/ttj ...

  6. Tensorflow官网CIFAR-10数据分类教程代码详解

    标题 概述 对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,本教程代码通过解决CIFAR-10数据分类任务,介绍了Tensorflow的一些高阶用法,演示了构建大型复杂模型的一些重 ...

  7. 要怎么通过PHP发布微博动态:附代码详解

    今天主要聊聊关于如何通过PHP发布微博动态(代码详解),这里通过一些实例讲解与代码示例让大家通过直观的表现了解其中内容,相信大家能从中收获到有用的知识. 首先,肯定是注册成为开发者新浪微博开放平台 选 ...

  8. 【TensorFlow】TFRecord数据集的制作:读取、显示及代码详解

    在跑通了官网的mnist和cifar10数据之后,笔者尝试着制作自己的数据集,并保存,读入,显示. TensorFlow可以支持cifar10的数据格式, 也提供了标准的TFRecord 格式. te ...

  9. TensorFlow学习笔记(二十四)自制TFRecord数据集 读取、显示及代码详解

    在跑通了官网的mnist和cifar10数据之后,笔者尝试着制作自己的数据集,并保存,读入,显示. TensorFlow可以支持cifar10的数据格式, 也提供了标准的TFRecord 格式,而关于 ...

最新文章

  1. JS子窗口调用父窗口中的函数
  2. 求从第一列走到第n列的最短路径
  3. jQuery获取和设置元素
  4. 各种开发源代码软件许可证异同
  5. 关于《如何阅读一本书》
  6. 反编译apk文件教程(查看java代码篇)
  7. linux全自动安装光盘,CentOS7全自动安装光盘制做详解
  8. jQuery如何选择表格每行中的第三列?
  9. 使用sys无法通过sqlplus或者sqldeveloper连接数据库
  10. Docker Hello World容器运行报错的解决办法
  11. android seekbar 源码,Android SeekBar调节音量
  12. sqlserver isnull函数使用
  13. cf319.B. Modulo Sum(dp 鸽巢原理 同余模)
  14. 2022-2028年中国饮用水行业市场专项调研及投资前景研究报告
  15. 【vpn异地组网专题】爱快ikuai软路由-VM虚拟机安装教程
  16. 大数据查询怎么优化?
  17. 一起学Python_Day05_常用模块及相关操作
  18. SEO网站收录情况分析查询方法(小技巧Tips)
  19. 【Git】Git的“隐身术”:git status/git diff……文件被忽略的秘密
  20. LoadRunner的函数全集

热门文章

  1. H-ui 前端框架推荐
  2. 前端用element-ui 完成分页
  3. 中e管家互联网理财对比优势
  4. 夺命雷公狗—玩转SEO---15---域名
  5. C++笔记(基础3):继承
  6. 分层软件架构及其数据解耦
  7. 获取到小程序全局唯一的 App 实例(getApp()获取)
  8. Metasploit基本用法
  9. 使用matlab7.0求解线性时不变系统的响应
  10. 转录组分析——差异表达分析