上期回顾:RT-Thread智能车目标识别系统连载教程——手写体识别模型 (1)
这里会介绍如何训练图像领域应用非常广的卷积神经网络 (Convolutional Neural Network)这一部分应当不会涉及到很多理论了,其实用 Keras 训练模型写起代码来非常简单,如果发现不太清楚代码为什么要这么写,可以看看上一部分对应的算子。
2.1 MNIST 手写体训练集
首先我们需要介绍一下训练集,毕竟在训练之前我们得先看看训练集长什么样子。
这就是手写体识别数据库的官网了:http://yann.lecun.com/exdb/mnist/,风格比较跨世纪:
这个图上就是全球各地大家用不同方法做手写体识别得到的准确率汇总,可以看到我用红圈画出来的部分,用前面介绍的 Logistic Regression (Linear Classifier) 做手写体识别效果是最差的,所以我们之后要使用的是卷积神经网络 CNN (之后我就都用 CNN 简写了)。
在网站的下面给出了训练集的二进制格式定义:
当然,这是指自己从网站下载原始训练集,从当中提取图片才需要了解的,我们使用 tensorflow 不需要自己解析数据集。
2.2 开发环境搭建
首先介绍一下机器学习的开发环境,现在主流开发环境都是 Python,但是我们也不是一个裸 Python 打开记事本就直接开始写代码了,实际上数据科学家用的最多的开发环境是 Anaconda,里面集成了 Python 和 R 开发环境。
我们从官网下载 Anaconda 安装包 https://www.anaconda.com/distribution/ 根据自己的操作系统选择就可以了,因为安装过程基本就是单纯地下一步、下一步,所以这里就不介绍了。
安装好之后,我们打开 Anaconda Prompt:
Anaconda 其实是有图形界面的,叫 Anaconda Navigator,但是这里以控制台为主,因为图形界面其实用起来反而比较麻烦,因为控制台一行命令就解决了更加快速方便。
然后我们输入:
1# 如果你是用的 CPU
2conda create -n tensorflow-cpu tensorflow
3
4# 如果你是用的 GPU (NVIDIA 显卡会自动安装显卡驱动,CUDA,cudnn,简直方便)
5conda create -n tensorflow-gpu tensorflow-gpu
这样开发环境就搭好了,我们激活一下当前的开发环境:
1# 如果你是用的 CPU
2conda activate tensorflow-cpu
3
4# 如果你是用的 GPU
5conda activate tensorflow-gpu
这里 激活 开发环境是指,在 Anaconda 下我们可以有多个开发环境,比如如果你想对比一下 CPU 和 GPU 计算速度的差距,可以同时安装 2 个开发环境,然后根据需要切换到 CPU 开发环境,或者 GPU 开发环境,非常方便。如果不用 Anaconda 而是一个 Python 裸奔的话,要么使用 VirtualEnv,要么就只能反复安装卸载不同的开发环境了。
接下来就可以启动我们写代码的位置了:
1# 这里的软件包 anacon