《人工智能基础与应用完整版全套PPT教程最全电子教案.ppt》由会员分享,可在线阅读,更多相关《人工智能基础与应用完整版全套PPT教程最全电子教案.ppt(271页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 第1章 人工智能概述人工智能基础与应用(微课版)工业和信息化精品系列教材人工智能技术第1章 人工智能概述2 第1章 人工智能概述重点A KEY知识了解人工智能 了解深度学习人工智能发展现状人工智能机器学习框架怎样学习人工智能3 第1章 人工智能概述内容CONTENTS导航了解深度学习了解人工智能人工智能发展现状人工智能机器学习框架怎样学习人工智能4 第1章 人工智能概述1.1 了解人工智能1人脸识别目前,手机屏幕解锁、支付宝的脸部ID支付、门禁闸机、企业考勤、金融开户等都在使用人脸识别技术。人脸识别还可以对人的眉毛、眼睛、鼻子、嘴巴以及轮廓等关键点进行检测,在解锁或支付过程中,找到眼睛的关
2、键点后可以识别眼睛是否为睁开的状态,如果闭着眼睛就不能解锁手机屏幕。5 第1章 人工智能概述1.1 了解人工智能现在几百元钱就可以买到一个能够对话、播放音乐的智能音箱,智能音箱在联网之后可以对用户说的话进行语音识别,并对其内容进行语义理解,最后将要回应的答案一方面通过语音合成反馈给用户,另一方面针对用户的需求或者要求的动作进行执行,如听歌等。当然,手机的语音助手也可以有相同的功能,如Siri、小爱同学等。2智能音箱6 第1章 人工智能概述1.1 了解人工智能在日常学习或者工作中,人们经常会有一些单词不认识或者要把某句话翻译成英语,目前借助软件或者网页就可以实现中英文互译。这里举一个例子,当翻译
3、“我在周日看了一本书”的时候,人工翻译可以很好地翻译出“I read a book on Sunday”,但是对于机器而言,它有着不同的翻译结果,首先就是一词多义的问题,如“看”这个词,可以翻译为“look”“watch”“read”等,其次就是语序问题,“在周日”这样的时间状语一般习惯放在句子后面,在翻译时需要做到“信、达、雅”,现在基于深度学习的翻译基本上可以做到“信、达”。基于深度学习的百度翻译结果如图1-1所示。3机器翻译7 第1章 人工智能概述1.1 了解人工智能百度百科对无人驾驶汽车给出的定义是“无人驾驶汽车是智能汽车的一种,也称为轮式移动机器人,主要依靠车内以计算机系统为主的智能
4、驾驶仪来实现无人驾驶的目的”。无人驾驶汽车是一项集合了自动控制、人工智能、传感器技术等多项技术的高度发展的产物。目前,我国的百度公司、清华大学都在致力于无人驾驶汽车的研发。人工智能已经在多个方面融入人们的日常生活中,并给人们带来了诸多便利。简言之,人工智能就是通过一些科学的计算方法,让机器做一些人类能够做的事情,例如,人类的视觉目标认知、图像识别,人类的听觉语音识别,人类的思考对图像的分析、对语言中语义的分析、理解以及回答等。4无人驾驶8 第1章 人工智能概述内容CONTENTS导航了解深度学习了解人工智能人工智能发展现状人工智能机器学习框架怎样学习人工智能9 第1章 人工智能概述1.2 了解
5、深度学习在了解深度学习之前,需要对它和人工智能之间的关系进行了解与分析,人工智能与深度学习的关系如图1-2所示。10 第1章 人工智能概述1.2 了解深度学习卡内基梅隆大学(Carnegie Mellon University)的汤姆迈克尔米切尔(Tom Michael Mitchell)教授在Machine learning一书中对机器学习给出了比较专业的定义,即“如果一个程序在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以从经验中学习”。通俗地讲,就是如果机器学习算法(一个程序)要实现一个预测、分类问题(任务T),那么需要对数据(经验E)进行分析,如果数据越多,最后实现
6、预测、分类时的准确率(效果P)越高,那么就称这个机器学习算法可以从数据中学习。11 第1章 人工智能概述1.2 了解深度学习深度学习是机器学习的一个分支,深度学习和机器学习的实现过程如图1-3所示。12 第1章 人工智能概述1.2 了解深度学习深度学习这个词,除了从传统机器学习那里继承了“学习”之外,“深度”是其区别于其他方法的特征之一。在人工智能中,深度学习是人工神经网络或者深层神经网络的代名词,“深度”指的是神经网络的网络层次,最基本的神经网络结构如图1-4所示。13 第1章 人工智能概述1.2 了解深度学习在21世纪前,深度神经网络由于受到计算力、数据量以及算法的限制,一直没有很好的表现
7、,当时传统机器学习的表现要好于神经网络,如支持向量机(Support Vector Machine,SVM)。步入21世纪,随着计算机性能的不断提高,大数据、云计算以及各种专用于计算的芯片的出现与普及,计算力以及数据量不再像之前那样限制神经网络的发展。在2012年的大规模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)中,辛顿(Hinton)和他的学生克里泽夫斯基(Alex Krizhevsky)设计的深度学习网络AlexNet获得了冠军;到2015年,深度学习在图像分类方面的错误率已经低于人工标注的错误率;现在
8、,深度学习被广泛应用于各个方向并取得了非常好的效果。14 第1章 人工智能概述内容CONTENTS导航了解深度学习了解人工智能人工智能发展现状人工智能机器学习框架怎样学习人工智能15 第1章 人工智能概述1.3 人工智能发展现状在竞赛领域,在ILSVRC的图像分类比赛中,2012年,AlexNet网络(一个7层的卷积神经网络)将图像分类的错误率从2011年的26%下降到16%。在实际应用中,人工智能在语音识别、语音合成上取得了非常瞩目的结果。人工智能已经被运用于农业上,2017年,蓝河公司(BlueRiver)的喷药机器人开始使用计算机视觉来识别需要肥料的植物。在医学上,谷歌大脑与Alphab
9、et旗下子公司Verily联合开发了一款能用来诊断乳腺癌的人工智能产品。在电商领域,阿里的人工智能系统“鲁班”在2017年的“双十一”网络促销日期间,根据用户行为和偏好,智能地为手机淘宝自动生成了4亿张不重复的海报。2017年,百度的小度机器人在最强大脑中战胜人类“脑王”,搜狗的问答机器人汪仔在一站到底中战胜哈佛女学霸。同年,百度CEO李彦宏将无人驾驶平台Apollo汽车开上五环。2018年,Google的Duplex代替人类自动接打电话、预订餐厅。2019年的央视网络春晚,人工智能主播“小小撒”携手撒贝宁,一同亮相舞台。现在,人工智能在动作识别、人脸识别、人体姿态估计、图像分类、图像生成、图
10、像分割等16 第1章 人工智能概述内容CONTENTS导航了解深度学习了解人工智能人工智能发展现状人工智能机器学习框架怎样学习人工智能17 第1章 人工智能概述1.4.1 机器学习框架简介常用的人工智能机器学习的基本框架包括TensorFlow、PaddlePaddle、Caffe、PyTorch、MXNet等,其说明如表1-1所示。框架名称接口语言是否开源TensorFlowC+、Java、Python、Go、C#等开源PaddlePaddleC+、Python开源CaffeC+、MATLAB、Python开源PyTorchC+、Python等开源MXNetC+、Python、R、MATLA
11、B等开源表1-1 TensorFlow、PaddlePaddle、Caffe、PyTorch、MXNet框架的说明18 第1章 人工智能概述1.4.2 TensorFlowTensorFlow的关注数在GitHub上表示为star的数量,截止到2019年6月,已经超过了12万,不同框架的star数如图1-5所示。该社区还对TensorFlow的六大优势做了重点阐述。(1)高度的灵活性。(2)可移植性(Portability)。(3)将科研和产品联系在一起。(4)自动求微分。(5)多语言支持。(6)性能最优化。19 第1章 人工智能概述1.4.3 PaddlePaddlePaddlePaddle
12、是百度推出的开源深度学习平台,最初由百度科学家和工程师开发,有着全面、准确的中文使用文档,为国内的开发者建立了友好的生态环境。(4)与产品相连。(3)稳定性。(1)灵活性。(2)高效性。PaddlePaddle支持丰富的神经网络架构和优化算法,易于配置复杂模型为了高效地使用异步计算资源,PaddlePaddle对框架的不同层进行优化,包括计算、存储、架构和通信。PaddlePaddle使利用各种CPU、GPU和机器来加速的训练变得简单。PaddlePaddle通过优化通信可以实现巨大的吞吐量,并可以快速执行。PaddlePaddle的设计也使其易于部署。20 第1章 人工智能概述内容CONTE
13、NTS导航了解深度学习了解人工智能人工智能发展现状人工智能机器学习框架怎样学习人工智能21 第1章 人工智能概述1.5 怎样学习人工智能02OPTION01OPTION03OPTION04OPTION掌握一门编程语言Python是一种高层次的结合了解释性、编译性、互动性的面向对象的脚本语言,它的使用方法非常简单。学会使用一种工具本书选择PyCharm作为工具。PyCharm是一个专门为Python打造的集成开发环境(Integrated Development Environment,IDE),具有一整套可以帮助用户在使用Python语言开发时提高效率的工具多学习一些论文每年都会有很多关于深度
14、学习的论文发表。在学习初期,需要研读一些入门的网络论文。尝试修改并训练网络对一个初学者而言,修改网络参数(即调参)是一件很困难的事,但是很多开源的网络都可以用自己的数据集去训练。在训练过程中,初学者会对这个网络有更加深刻的认识。22 第1章 人工智能概述THANKS23 第5章 MNIST数据集及神经网络人工智能基础与应用(微课版)工业和信息化精品系列教材人工智能技术第5章 MNIST数据集及神经网络人民邮电出版社24 第5章 MNIST数据集及神经网络重点A KEY知识MNIST数据集简介神经元常用函数深度神经网络经典卷积神经网络介绍循环神经网络优化器及优化方法25 第5章 MNIST数据集
15、及神经网络内容CONTENTS导航神经元常用函数MNIST数据集简介深度神经网络经典卷积神经网络介绍循环神经网络优化器及优化方法26 第5章 MNIST数据集及神经网络5.1 MNIST数据集简介数据集(Dataset)是一类数据的集合。传统的数据集通常表现为表格或者文档形式,每个数值被称为数据资料。数据集名称功能Iris Flower数据集由罗纳德费希尔(Ronald Fisher)引入的多变量数据集MNIST数据集通常用于测试分类、聚类和图像处理算法的手写数字图像分类数据分析数据集一个统计程序清单,可用于分类数据的分析时间序列数据集在时间上顺序索引的一系列数据表5-1 经典的数据集27 第
16、5章 MNIST数据集及神经网络5.1 MNIST数据集简介p MNIST数据集是一个含有手写数字的大型数据集,包含09共10个数字,通常用于训练图像处理系统。p MNIST数据集包含60000个训练图像和10000个测试图像p MNIST数据集共有4个文件,分别是训练集数据、训练集标签以及测试集数据、测试集标签。MNIST数据集的图像以字节的形式进行存储,每幅图像都为单通道图像,由2828个像素点构成。p MNIST数据集的测试集样本图像如图5-1所示。图5-1 MNIST数据集的测试集样本图像28 第5章 MNIST数据集及神经网络5.1 MNIST数据集简介不同分类器使用MNIST数据集
17、的错误率如表5-2所示。表5-2 不同分类器使用MNIST数据集的错误率类型错误率(% %)非线性分类器3.3线性分类器7.62层深度神经网络(DNN)1.6支持向量机(SVM)0.566层深度神经网络(DNN)0.355层卷积神经网络(CNN)0.2129 第5章 MNIST数据集及神经网络内容CONTENTS导航神经元常用函数MNIST数据集简介深度神经网络经典卷积神经网络介绍循环神经网络优化器及优化方法30 第5章 MNIST数据集及神经网络5.2.1 激活函数1sigmoid()函数在之前的一段时间内,sigmoid()函数是非常常用的,因为它对神经元的激活有很好的解释,且它本身为单调
18、连续,非常适合作为输出层。缺陷:p 第一,当输入稍微远离了坐标原点,函数的梯度就变得很小了,几乎为0,这会导致在反向传播过程中,梯度很小的时候接近0,神经网络无法更新参数,这个问题称为梯度饱和,也可以称为梯度弥散。p 第二,sigmoid()函数的输出不是零中心的,这会影响梯度下降的运作。31 第5章 MNIST数据集及神经网络5.2.1 激活函数2tanh()函数tanh()函数的数学公式为 ,tanh()函数图像如图5-2所示。tanh()函数的定义域是 ,值域是(-1,1)。其输入如果是很大的负数,其值就会无限接近于-1;输入如果是很大的正数,其值就会无限接近于1。和sigmoid()函
19、数一样,tanh()也存在梯度饱和问题,但是tanh()的输出是零中心的,所以实际使用更多一些。sinheetanh( )cosheexxxxxxx32 第5章 MNIST数据集及神经网络5.2.1 激活函数3ReLU函数ReLU函数的数学公式为 ,ReLU函数图像如图5-3所示。ReLU函数的定义域是 ,值域是 。这个激活函数可以理解为一个关于0的阈值。( )max(0, )f xx33 第5章 MNIST数据集及神经网络5.2.2 池化函数p 池化是用一个矩阵窗口在张量上进行扫描,通过取最大值或者平均值等方式来减少参数数量的方法。最大值池化和平均值池化的过程如图5-4所示。p 池化层主要对
20、输入的图像进行降采样(Subsample),池化并不改变深度或维度,只改变大小。池化函数有平均值池化函数和最大值池化函数等。34 第5章 MNIST数据集及神经网络5.2.2 池化函数TensorFlow函数:tf.nn.avg_pool(value,ksize,strides,padding,name=None),该函数计算的是池化区域的平均值。1平均值池化函数 value:需要池化的输入,一般池化层接在卷积层后面,这是一个四维的张量,4个维度为batch,height,width,channels。 ksize:池化窗口的大小,是一个四维向量,一般是1,height,width,1。 st
21、rides:和卷积类似,是窗口在每一个维度上滑动的步长,一般是1,stride,stride,1。 padding:和卷积类似,可以取“VALID”或“SAME”。 name:该池化的名称。35 第5章 MNIST数据集及神经网络5.2.2 池化函数 TensorFlow函数:tf.nn.max_pool(value,ksize,strides,padding,name=None),该函数计算的是池化区域的最大值。 在池化时一般选择最大值池化。2最大值池化函数36 第5章 MNIST数据集及神经网络5.2.3 损失函数hinge损失函数源自支持向量机,在支持向量机中,最终的目的是最大化分类间隔
22、,减少错误分类的样本数目。损失函数公式为 ,其中, , 是一个超参数,设置为1.0时,在绝大多数情况下都是安全的。1hinge损失函数max(0,)iyLss( ,)iisf xW21()iiLyyn2square损失函数损失函数公式为 ,大多用在线性回归中。3log损失函数在使用似然函数最大化时,其形式是进行连乘,但是为了便于处理,一般会加上log,这样便可以将连乘转换为求和。由于log函数是单调递增函数,因此不会改变优化结果。log类型的损失函数也是一种常见的损失函数37 第5章 MNIST数据集及神经网络5.2.3 损失函数4交叉熵如何判断输出的结果与期望结果有多接近呢?交叉熵(Cros
23、s Entropy)是常用的方法之一。交叉熵的公式为 , 是分类问题的真实分布概率, 是分类问题的预测分布概率,也就是说,交叉熵的输入是概率,范围是0,1。交叉熵得到的值越小,真实分布概率和预测分布概率越接近,预测的结果就越真实。( , )( )log ( )H p qp xq x 由于网络的输出是任意的,如ReLU函数的值域为 ,所以在进行交叉熵计算之前还需要将输出结果转换为概率分布。softmax()函数就是一个常用的方法,它的公式为 ,该函数所有输出值的和为1,输入的负数会变成正数,然后外面嵌套 函数,就可以得到优化结果。esoftmax( )eiiyyy 38 第5章 MNIST数据集
24、及神经网络内容CONTENTS导航神经元常用函数MNIST数据集简介深度神经网络经典卷积神经网络介绍循环神经网络优化器及优化方法39 第5章 MNIST数据集及神经网络5.3 深度神经网络深度神经网络(Deep Neural Networks,DNN)可以理解为有很多隐藏层的神经网络。具有一层隐藏层的神经网络如图5-5所示。( )( ),nni jijyfxWb( ),ni jW(1)jb40 第5章 MNIST数据集及神经网络5.3 深度神经网络反向传播过程:如果有表达式 ,现在需要求出 ,先将这个复合函数的表达式分解为 和 ,根据链式求导法则可知 ,所以需要分别求出 和 ,可以求得 , ,
25、故得到 。前向传播与反向传播过程如图5-6所示。( , , )()f x y zxyzfxpxyfp zffpxpxpxfzp1pxpzxfp41 第5章 MNIST数据集及神经网络内容CONTENTS导航神经元常用函数MNIST数据集简介深度神经网络经典卷积神经网络介绍循环神经网络优化器及优化方法42 第5章 MNIST数据集及神经网络5.4 经典卷积神经网络介绍p卷积神经网络(Convolutional Neural Networks,CNN)是一类深度神经网络,最常用于分析视觉图像。p一个简单的卷积神经网络是由各种层按一定顺序排列的。卷积神经网络主要由卷积层(Convolutional
26、Layers)、池化层(Pooling Layers)、全连接层(Fully Connected Layers,FC Layers)构成。将这些层按一定的顺序排列,就可以搭建一个卷积神经网络。43 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现LeNet-5模型是由杨立昆(Yann LeCun)教授于1998年在论文Gradient-Based Learning Applied to Document Recognition中提出的,是一种用于手写体字符识别的非常高效的卷积神经网络。网络实现过程如图所示。44 第5章 MNIST数据集及神经网络5.4.1 LeNet-
27、5模型及其实现卷积层是一个将卷积运算和加法运算组合在一起的隐藏层,在图像识别里提到的卷积是二维卷积,即离散二维滤波器(也称作卷积核)与二维图像做卷积操作,简单地讲是二维滤波器滑动到二维图像上的所有位置,并在每个位置上与该像素点及其领域像素点做内积。卷积运算过程如图所示。45 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现(1) 输入层。(2)卷积层(第一层)。(3)池化层(第二层)。(4)卷积层(第三层)。(5)池化层(第四层)。(6)全连接层(第五层)。(7)全连接层(第六层)。(8)全连接层,输出层(第七层)。1LeNet-5实现的过程46 第5章 MNIST数据
28、集及神经网络5.4.1 LeNet-5模型及其实现(1)将模型复杂化。(2)增加更多特征,使输入数据的特征更明显。(3)调整超参数。(4)减弱正则化约束或者去掉正则化约束。2欠拟合47 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现(1)增加训练数据量。(2)减少数据特征,去掉数据中非共性的特征。(3)调整超参数。(4)使用正则化约束或者增强正则化约束。(5)降低模型的复杂度。(6)使用Dropout。(7)Early Stopping,即提前结束训练。3过拟合(4)自动求微分。48 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现4卷积神经网
29、络的TensorFlow实现通过TensorFlow框架实现一个类似于LeNet-5的神经网络,来解决MNIST数据集上的数字识别问题。本网络与原LeNet-5的区别是:卷积核的个数不同;激活函数不同,此处用的是ReLU;输出层选择softmax()函数。二者的整体过程是一致的。49 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现1导入必要的库为了高效地使用异步计算资源,PaddlePaddle对框架的不同层进行优化,包括计算、存储、架构和通信。1. # - coding: utf-8 -2. # 载入MINIST数据需要的库3. from tensorflow.ex
30、amples.tutorials.mnist import input_data4. # 保存模型需要的库5. from tensorflow.python.framework.graph_util import convert_variables_to_constants6. from tensorflow.python.framework import graph_util7. # 导入其他库8. import tensorflow as tf9. import time10.import os11.os.environTF_CPP_MIN_LOG_LEVEL = 212.# 获取MINI
31、ST数据13.mnist = input_data.read_data_sets(./MNIST_data, one_hot=True)14.# 占位符15.# x是特征值,也就是像素16.# 使用一个2828=784列的数据来表示一个图像的构成17.# 每一个点都是这个图像的一个特征18.# 因为每一个点都会对图像的外观和表达的含义有影响,只是影响的大小不同而已19.x = tf.placeholder(float, shape=None, 784, name=Mul) # 输入2828=78420.# y_是真实数据0,0,0,0,1,0,0,0,0,为421.y_ = tf.placeh
32、older(float, shape=None, 10, name=y_) # 输出22.# 变量 78410的矩阵23.# W表示每一个特征值(像素点)影响结果的权重24.# 这个值很重要,因为深度学习的过程就是发现特征25.# 经过一系列训练,得出每一个特征值对结果影响的权重26.W = tf.Variable(tf.zeros(784, 10), name=x)27.b = tf.Variable(tf.zeros(10), y_) 28.# 权重29.def weight_variable(shape):30. # 生成的值服从具有指定平均值和标准偏差的正态分布50 第5章 MNIST
33、数据集及神经网络5.4.1 LeNet-5模型及其实现31. # 如果生成的值大于平均值的两个标准偏差的值,则丢弃重新选择32. initial = tf.truncated_normal(shape, stddev=0.1) # 标准差为0.133. return tf.Variable(initial)34.# 偏差35.def bias_variable(shape):36. initial = tf.constant(0.1, shape=shape)37. return tf.Variable(initial)38.# 卷积39.def conv2d(x, W):40. # 参数x指
34、需要做卷积的输入图像,要求它是一个Tensor41. # 具有batch, in_height, in_width, in_channels这样的shape42. # 具体含义是训练时一个batch的图像数量, 图像高度, 图像宽度, 图像通道数 43. # 注意这是一个4维的Tensor,batch和in_channels在卷积层中通常设为144. # 参数W相当于CNN中的卷积核,要求它是一个Tensor45. # 具有filter_height, filter_width, in_channels, out_channels这样的shape46. # 具体含义是卷积核的高度,卷积核的宽度
35、,图像通道数,卷积核个数47. # 注意,第三维in_channels就是参数x的第四维48. return tf.nn.conv2d(x, W, strides=1, 1, 1, 1, padding=VALID)49. # 参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度为450. # 参数padding:string类型的量,只能是“VALID”,不补零51.# 最大池化52.def max_pool_2x2(x):53. # x:input54. # ksize:filter,滤波器大小为2255. # strides:步长,22,表示filter窗口每次水平移动
36、两格,每次垂直移动两格56. # padding:填充方式,补零57. return tf.nn.max_pool(x, ksize=1, 2, 2, 1, strides=1, 2, 2, 1, padding=SAME)58.# 第一层卷积59.# 权重+偏置+激活+池化60.# patch为55;in_size为1,即图像的厚度,如果是彩色的,则为3;32个卷积核(滤波器)61.W_conv1 = weight_variable(5, 5, 1, 32)62.b_conv1 = bias_variable(32)63.# 对数据进行重新排列,形成图像64.x_image = tf.res
37、hape(x, -1, 28, 28, 1)65.# print(x,x)66.# print(x_image,x_image)67.# ReLU操作,输出大小为28283268.h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)69.# Pooling操作,输出大小为14143270.h_pool1 = max_pool_2x2(h_conv1)71.# 第二层卷积72.# 权重+偏置+激活+池化73.# patch为55;in_size为32,即图像的厚度;out_size是64,即输出的大小74.W_conv2 = weigh
38、t_variable(5, 5, 32, 64)75.b_conv2 = bias_variable(64)51 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现76.# ReLU操作,输出大小为14146477.h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)78.# Pooling操作,输出大小为776479.h_pool2 = max_pool_2x2(h_conv2)80.# 全连接一81.W_fc1 = weight_variable(7 7 64, 1024)82.b_fc1 = bias_va
39、riable(1024)83.# 全连接二84.W_fc2 = weight_variable(1024, 10)85.b_fc2 = bias_variable(10)86.# 输入数据变换87.# 变换为mn,列n为776488.h_pool2_flat = tf.reshape(h_pool2, -1, 7 7 64)89.# 进行全连接操作90.# tf.nn.relu()函数可将大于0的数保持不变,将小于0的数置为091.h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)92.# Dropout可防止过拟合,它一般用在
40、全连接层,训练用,测试不用93.# Dropout就是在不同的训练过程中随机扔掉一部分神经元94.# Dropout可以让某个神经元的激活值以一定的概率p停止工作95.# 参数keep_prob:设置神经元被选中的概率,在初始化时keep_prob是一个占位符96.# TensorFlow在运行时设置keep_prob具体的值,如keep_prob: 0.597.keep_prob = tf.placeholder(float, name=rob)98.h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)99.# 用于训练的softmax()函数将所有数据归
41、一化到01之间,大的数据特征更明显100.y_conv = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2, name=res)101.# 训练完成后,进行测试用的softmax()函数102.y_conv2 = tf.nn.softmax(tf.matmul(h_fc1, W_fc2) + b_fc2, name=final_result)103.# 交叉熵的计算,返回包含了损失值/误差的Tensor104.# 熵是衡量事物混乱程度的一个值105.cross_entropy = -tf.reduce_sum(y_ tf.log(y_con
42、v)106.# 优化器,负责最小化交叉熵107.train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)108.# tf.argmax():取出该数组最大值的下角标109.correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1)110.# 计算准确率111.accuracy = tf.reduce_mean(tf.cast(correct_prediction, float)112.# 创建会话113.with tf.Session() as
43、 sess:114. time_begin = time.time()115. # 初始化所有变量116. sess.run(tf.global_variables_initializer()117. # print(sess.run(W_conv1)118. # 保存输入/输出,可以在之后用119. tf.add_to_collection(res, y_conv)120. tf.add_to_collection(output, y_conv2)121. tf.add_to_collection(x, x)52 第5章 MNIST数据集及神经网络5.4.1 LeNet-5模型及其实现122
44、.# 训练开始123. for i in range(10000):124. # 取出MNIST数据集中的50个数据125. batch = mnist.train.next_batch(50)126. # run()可以看作输入相关值到函数中的占位符,然后计算出结果127. # 这里将batch0给x,将batch1给y_128. # 执行训练过程并传入真实数据129. train_step.run(feed_dict=x: batch0, y_: batch1, keep_prob: 0.5)130. if i % 100 = 0:131. train_accuracy = accurac
45、y.eval(feed_dict=x: batch0, y_: batch1, keep_prob: 1.0)132. print(step %d, training accuracy %g % (i, train_accuracy)133. time_elapsed = time.time() - time_begin134. print(训练所用时间:%d秒 % time_elapsed)135. # 用saver 保存模型136. saver = tf.train.Saver()137. saver.save(sess, model_data/model)53 第5章 MNIST数据集及
46、神经网络5.4.1 LeNet-5模型及其实现执行该程序,如果计算机安装的是CPU版本的TensorFlow,建议将训练步数调少,否则会训练非常久。训练完成后的准确率如图5-9所示。图5-10 模型文件54 第5章 MNIST数据集及神经网络5.4.2 AlexNet介绍AlexNet模型是2012年大规模视觉识别挑战赛中的冠军模型,AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了更深、更宽的网络结构中。另外,AlexNet模型首次在CNN中采取了ReLU激活函数、Dropout防止过拟合、GPU加速训练等技术。16层的VGGNet网络结构如图5-11所示。55 第5章 M
47、NIST数据集及神经网络5.4.4 Inception模型及其实现1Inception模型介绍5.2.1 激活函数5.2.1 激活函数56 第5章 MNIST数据集及神经网络5.4.4 Inception模型及其实现p由于一个Inception模块要进行多次运算,所以需要耗费大量的计算资源。为了实现降维,降低运算成本,在33、55的卷积运算前,在最大值池化的运算后,加入11的卷积核。p图5-13所示为降维的Inception模块的一个单元结构示意图。57 第5章 MNIST数据集及神经网络5.4.4 Inception模型及其实现2GoogLeNet实现的过程5.2.3 损失函数5.3 深度神
48、经网络深度神经网络(Deep Neural Networks,DNN)可以理解为有很多隐藏层的神经网络。具有一层隐藏层的神经网络如图5-5所示。58 第5章 MNIST数据集及神经网络内容CONTENTS导航神经元常用函数MNIST数据集简介深度神经网络经典卷积神经网络介绍循环神经网络优化器及优化方法59 第5章 MNIST数据集及神经网络5.5.1 循环神经网络简介p时间序列数据是序列数据中最常见的一种。时间序列数据(Time Series Data)是在不同时间上收集到的数据,用于描述现象随时间变化的情况。这类数据反映了某一事物、现象等随时间的变化状态或程度。p在全连接的神经网络以及卷积神
49、经网络中有输入层、隐藏层、输出层,层与层之间通过学习到的权重进行连接,在同一层中,节点与节点之间是不连接的。60 第5章 MNIST数据集及神经网络5.5.1 循环神经网络简介1RNN基本结构2.2.1 安装Python图5-16 一个完整的RNN结构图5-17 RNN不展开表达样式61 第5章 MNIST数据集及神经网络5.5.1 循环神经网络简介2RNN结构分析5.3 深度神经网络反向传播过程:如果有表达式 ,现在需要求出 ,先将这个复合函数的表达式分解为 和 ,根据链式求导法则可知 ,所以需要分别求出 和 ,可以求得 , ,故得到 。前向传播与反向传播过程如图5-6所示。5.4 经典卷积
50、神经网络介绍图5-18 将输入放到某一个序列进行计算图5-19 将输入放到全部序列中进行计算62 第5章 MNIST数据集及神经网络5.5.1 循环神经网络简介(2)Sequence-to-Vector结构假设一个问题的输入是一个序列,输出是一个单独的值,一般会在最后一个序列上进行输出变换,可以建立Sequence-to-Vector结构,如图5-20所示。图5-20 Sequence-to-Vector结构63 第5章 MNIST数据集及神经网络5.5.1 循环神经网络简介(3)Encoder-Decoder结构有时也会将Encoder-Decoder结构称为Sequence-to-Sequ