无题
1 | title: Linux系统上常用软件集锦 |
[TOC]
文章参考:https://github.com/kzbkzb/Python-AI
文章参考:https://mp.weixin.qq.com/s/TR13H-gTqlWKTzIhPATsaw
文章参考:https://zhuanlan.zhihu.com/p/379577547
概述
本文 GitHub https://github.com/kzbkzb/Python-AI 已收录
目录
一、前期工作
- \1. 设置GPU(如果使用的是CPU可以忽略这步)
- \2. 导入数据
- \3. 归一化
- \4. 可视化图片
- \5. 调整图片格式
二、构建CNN网络模型
三、编译模型
四、训练模型
五、预测
六、知识点详解
- \1. MNIST手写数字数据集介绍
- \2. 神经网络程序说明
- \3. 网络结构说明
我的环境:
- 语言环境:Python3.6.5
- 编译器:jupyter notebook
- 深度学习环境:TensorFlow2
总结
本文使用的是最简单的CNN模型- -LeNet-5,如果是第一次接触深度学习的话,可以先试着把代码跑通,然后再尝试去理解其中的代码。
1. MNIST手写数字数据集介绍
MNIST手写数字数据集来源于是美国国家标准与技术研究所,是著名的公开数据集之一。数据集中的数字图片是由250个不同职业的人纯手写绘制,数据集获取的网址为:http://yann.lecun.com/exdb/mnist/(下载后需解压)。我们一般会采用(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
这行代码直接调用,这样就比较简单
MNIST手写数字数据集中包含了70000张图片,其中60000张为训练数据,10000为测试数据,70000张图片均是28*28
,数据集样本如下:
如果我们把每一张图片中的像素转换为向量,则得到长度为28*28=784
的向量。因此我们可以把训练集看成是一个[60000,784]
的张量,第一个维度表示图片的索引,第二个维度表示每张图片中的像素点。而图片里的每个像素点的值介于0-1
之间。
神经网络程序说明
神经网络程序可以简单概括如下:
3. 网络结构说明
模型的结构
各层的作用
- 输入层:用于将数据输入到训练网络
- 卷积层:使用卷积核提取图片特征
- 池化层:进行下采样,用更高层的抽象表示图像特征
- Flatten层:将多维的输入一维化,常用在卷积层到全连接层的过渡
- 全连接层:起到“特征提取器”的作用
- 输出层:输出结果