1
2
3
4
5
6
7
8
9
10
11
12
13
14
title: Linux系统上常用软件集锦
date: 2020-07-20 00:00:00
updated: 2022-01-05 00:00:00
tags: [Linux,四大组件,Activity]
type: [Linux,四大组件,Activity]
comments: Activity的生命周期完全解析
description: Activity的生命周期完全解析
keywords: Activity的生命周期完全解析
top_img:
mathjax:
katex:
aside:
aplayer:
highlight_shrink:

[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,数据集样本如下:

img

如果我们把每一张图片中的像素转换为向量,则得到长度为28*28=784的向量。因此我们可以把训练集看成是一个[60000,784]的张量,第一个维度表示图片的索引,第二个维度表示每张图片中的像素点。而图片里的每个像素点的值介于0-1之间。

img

神经网络程序说明

神经网络程序可以简单概括如下:

img

3. 网络结构说明

模型的结构

img

各层的作用

  • 输入层:用于将数据输入到训练网络
  • 卷积层:使用卷积核提取图片特征
  • 池化层:进行下采样,用更高层的抽象表示图像特征
  • Flatten层:将多维的输入一维化,常用在卷积层到全连接层的过渡
  • 全连接层:起到“特征提取器”的作用
  • 输出层:输出结果