文章目录

  • 写在前头
  • 1. Cifar10数据集的介绍、获取
  • 2. 训练集数据可视化
  • 3. 简单数据处理:将标签进行 one-hot 编码转换
  • 4. 构建网络模型
  • 5. 模型训练
  • 6. 训练数据可视化
  • 7. 数据评估
    • 7.1 数据处理
    • 7.2 将数据送到模型中测试
  • 写在后面

写在前头

本文与 30天 吃掉那只 tensorflow 的原文有较大的出入,只是借鉴他使用的数据集并且整个构建网络的过程;数据处理部分和训练网络部分都是自己设计的,测试部分我也使用了自己上网找到图片并进行了处理;仅供大家参考

1. Cifar10数据集的介绍、获取

cifar10 数据集使用了 10 种分类的训练数据;标签从 0-9
获取方式: 如下:
使用强大的 jupyterlab 工具来查看一下 load_data 的用法;这个函数会自动帮你下载数据集(这种通过命令行直接从 tensorflow 官网中下载大约需要2个小时,可以通过别的方式获取,请自行查阅相关文章)

2. 训练集数据可视化

load_data 函数最终返回 2 个 tuple;所以我们用以下代码来接受返回值

可视化一下前三个训练数据

  • 我们可以看到训练数据的前三个的标签为 6,9,9
  • 也可以看到我们可视化出来的结果前三张图分别是:青蛙、卡车、卡车

3. 简单数据处理:将标签进行 one-hot 编码转换

对于多分类问题,我们一般会把标签转换成 one-hot 编码的形式,为了以后更容易计算;所以我们在这里用到了 to_categorical 函数来转换

还记得么 y_train 的前三个标签是 6,9,9,现在变成了对应位置为 1 其他位置为0 的 one-hot 编码,这是为了在后面的计算中对应的使用 softmax 函数计算出概率分布,并通过相应位置的概率分布计算损失;

4. 构建网络模型

可以用 model.summary() 来查看你已经建立的网络结构还有需要训练的参数

5. 模型训练

6. 训练数据可视化

先来看看 history 里有哪些可以可视化的数据:
发现有 ['loss', 'acc', 'val_loss', 'val_acc'] 我们使用索引把他们的值分别拿出来并展示以下,他们每一组数据都存在一个列表里,我们就用这些数据可视化每一个 epoch 的训练过程

把 loss 和 val_loss 呈现在一张图中

把 acc 和 val_acc 也放在同一个图中进行对比

两个图像表明,数据被训练的很好,也没有存在过拟合现象。

7. 数据评估

数据评估的准确率甚至略高于训练集,这也是很好的结果

下面,我从网上随便照一张图片,用我们训练好的模型来检测一下训练成果。下面是我找的网图;下面的代码中我将演示如何处理这张网图,然后用模型来进行预测。

7.1 数据处理

  • 可以看到,刚读出来的图片是 3 个通道的彩图;我们上面训练的也使用的 3 通道彩图;
  • 所以我们要对这个图片进行 resize;但是 resize 操作不能直接对 3 通道的图片做;所以:
  • 我们按照 opencv 读图片的通道顺序 b, g, r (注意不是 rgb) 使用 cv2.split() 函数对数据解包;得到了每个通道之后我们分别做 resize 操作,最后再用 cv2.merge() 将三个通道叠加起来;这样我们就可以得到我们想要的结果了


7.2 将数据送到模型中测试

但是直接这样送入模型会报错;因为你用测试集进行测试的时候你的数据是 4 维的,(10000, 32, 32, 3) 这个 10000 代表的是10000张测试图片;所以我们要进行测试,要把这个测试的数据升高一个维度,或者把 n 张图片绑到一个数组里面送去测试,即把矩阵变成 (n, 32, 32, 3) 这种模式;


为了简单起见,我直接用两张它自己作为测试集;
注意!!! 把这两张图片放在一个列表中之后,千万不要忘记将这个列表用 numpy 转换成一个矩阵;因为模型的输入只能是矩阵而不能是列表

按照概率分布中的结果,我们筛选出最大的值来看一看是不是我们想要的标签

使用 .argmax() 函数返回数组中最大的值的索引;返回的位置是 1;我们回去看 cifar10 数据集中的 1 代表的是 “汽车”

所以可以看出来,模型的训练效果还是不错的。模型的保存部分,大家可以翻看我的上篇文章。

写在后面

如有错误,敬请指正;欢迎交流
个人的微信号:

30天吃掉那只tensorflow之(2):使用 cifar10 数据集来训练网络并测试相关推荐

  1. 《30天吃掉那只 TensorFlow2.0》 开篇辞(Tensorflow 学习之路)

    <30天吃掉那只 TensorFlow2.0 >开篇辞

  2. 《30天吃掉那只 TensorFlow2.0 》(附下载)

    本书面向读者  本书假定读者有一定的机器学习和深度学习基础,使用过Keras或者Tensorflow1.0或者Pytorch搭建训练过模型. 对于没有任何机器学习和深度学习基础的同学,建议在学习本书时 ...

  3. 重磅开源!《30天吃掉那只 TensorFlow2.0 》(附下载)

    本书面向读者  本书假定读者有一定的机器学习和深度学习基础,使用过Keras或者Tensorflow1.0或者Pytorch搭建训练过模型. 本书写作风格 本书是一本对人类用户极其友善的TensorF ...

  4. 《30天吃掉那只 TensorFlow2.0》 1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题)

    1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题) 文章目录 1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题) 一,准备数据 二,定义模型 三,训练模型 四,评估模型 ...

  5. 《30天吃掉那只 TensorFlow2.0》 2-2 三种计算图

    2-2 三种计算图 有三种计算图的构建方式:静态计算图,动态计算图,以及Autograph. 在TensorFlow1.0时代,采用的是静态计算图,需要先使用TensorFlow的各种算子创建计算图, ...

  6. Keras TensorFlow教程:使用自己的数据集进行训练

    大多数Keras教程都尝试使用图像分类数据集(如MNIST(手写识别)或基本对象CIFAR-10(基本对象识别))来开启Keras库的基础知识学习. 这篇文章将对Keras入门教程进行不同的尝试.使用 ...

  7. 【TensorFlow实战笔记】卷积神经网络CNN实战-cifar10数据集(tensorboard可视化)

    IDE:pycharm Python: Python3.6 OS: win10 tf : CPU版本 代码可在github中下载,欢迎star,谢谢 CNN-CIFAR-10 一.CIFAR10数据集 ...

  8. 吃掉那只青蛙_每日可交付成果–吃青蛙的艺术

    吃掉那只青蛙 What are Daily deliverables?  什么是每日可交付成果? This means getting something - anything done every ...

  9. [读书笔记]-博恩·崔西-吃掉那只青蛙

    吃掉那只青蛙 (Eat that frog) [美]博恩·崔西 – 拒绝穷忙,把时间留给最重要的事情 文章目录 吃青蛙法则 0. 前言 1. 明确目标 2. 精心计划 3. 运用80/20法则 4. ...

最新文章

  1. Go 学习笔记(29)— range 作用于字符串、数组、切片、字典、通道
  2. GoogleFusionTablesAPI初探地图与云计算
  3. PTA数据结构与算法题目集 6-9 二叉树的遍历
  4. cocos2d_x 常用函数解析
  5. ORACLE安装请注意事项
  6. 设计模式之适配器模式--java描述
  7. python经典项目实战_2个Python入门级的实战项目
  8. Zookeeper的ACL权限控制
  9. 用doxygen自动生成文档
  10. 牛客网编程题03--明明的随机数
  11. mipi协议_Cadence发布业界首款面向多协议PHY的验证IP产品
  12. jQuery 实现点击页面其他地方隐藏菜单
  13. 在chrome上安装印象笔记插件
  14. MATLAB Simulink工具箱
  15. 【螺钉和螺母问题】【算法分析与设计】假设我们有n个直径各不相同的螺钉以及n个相应的螺母...
  16. 面向开发人员的 27种Vuejs开发工具
  17. 史上MySQL安装配置教程最细,一步一图解
  18. wiresshark抓包
  19. 六度分割理论走向实践
  20. 苹果手机微信声音小怎么调大声_今天才知道,微信语音隐藏的3个功能,太实用了,看完涨知识了...

热门文章

  1. 数据结构-顺序表的顺序存储
  2. mysql临时表 is full_mysql出现“the table xxx is full”的问题
  3. 车辆预期功能安全标准21448笔记(七)
  4. 判断是哪一个数据库中发生了此问题查找损坏的数据库对象。连接发生问题的数据库
  5. lz77优化_数据压缩算法:LZ77 算法的分析与实现
  6. 20秋PHP作业3,兰大《网页与网站设计》20秋平时作业3满分
  7. 【Arc GIS 零基础教学】土地利用类型图的绘制方法
  8. 如何成为某个领域的达人?
  9. 微商引流精准客源,全自动黑科技软件!
  10. Java并发编程(四)- 资源分配(互斥)