1、1深度学习应用技术目录深度简介学习2TensorFlow简介3汤晓鸥教授、王晓刚及其研究团队开发了一个名为DeepID(深分证)的深度学习模型,在LFW(LabeledFacesintheWild)数据库,即人脸识别上获得了99.15%的识别率,超过目前非深度学习算法以及人类的识别率。深度学习技术在语音识别领域中更是取得了突破性的进展,在2009年杰弗里辛顿(GeoffreyHinton)和邓力(DengLi)将深度神经网络用于声学模型建模,用于替代高斯混合模型,使用了深度神经网络后,语音识别的词错误率相对高斯混合模型降低了30%,同时发现了在训练数据足够的情况下,并不一定需要进行
2、预训练。深度学习简介深度学习方法是具有多层次特征描述的特征学习,通过一些简单但非线性的模块将每一层特征描述(从未加工的数据开始)转化为更高一层的、更为抽象一些的特征描述。深度学习的关键在于这些层次的特征不是由人工设计的,而是使用一种通用的学习步骤从数据中学习获取的。深度学习特指基于深层神经网络实现的模型或算法,其解决的核心问题之一就是自动地将简单的特征组合成更加复杂的特征,并使用这些组合特征解决问题。深度学习是机器学习的一个分支,它除了可以学习特征和任务之间的关联之外,还能自动从简单特征中提取更加复杂的特征。现代的深度学习已经超越了神经科学观点,它可以更广泛地适用于各种并不是由神经网络启发而来
4、慢,容易影响整个生产过程的效率。物体检测比物体识别更难。原因在于物体检测需要从图像中确定物体的位置,有时还有可能存在多个物体。对于这样的问题,人们提出了多个基于卷积神经网络(ConvolutionalNeuralNetworks,CNN)的方法,这些方法有着非常优秀的性能。在使用卷积神经网络进行物体检测的方法中,有一种叫作R-CNN的方法,R-CNN是较早运用在物体检测上的,方法较为成熟,且运用R-CNN算法可以提高训练和测试的速度,同时提高检测精度,R-CNN由图像输入层、候选特征提取层、卷积神经网络计算特征层和分类区域层组成。深度学习常见应用视觉定位要求机器视觉能够快速准确地找到被测零
5、件并确认其位置。在半导体封装领域,设备需要根据机器视觉取得芯片位置信息、调整拾取头、准确拾取芯片并进行绑定。如下图所示。深度学习常见应用2.视觉定位在日常生活中,物体测量通常是对物体的质量、长度、高度、体积等进行测量。在机器视觉工业应用中,最大的特点就是使用非接触光学进行测量。如右图所示。深度学习常见应用3.物体测量物体分拣是建立在识别、检测之后的一个环节,通过机器视觉对图像中的目标进行检测和识别,实现自动分拣,在工业应用领域常用于食品分拣、零件表面瑕疵自动分拣、棉花纤维分拣等。同时,物体分拣在物流、仓库中的运用更为广泛,在分拣过程中,机器通过按照物品种类、物品大小、出入库的先后顺序等方法
6、对物体进行分拣。如右图所示。深度学习常见应用4.物体分拣图像分割就是将图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程,它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分为4类。基于阈值的分割方法。基于区域的分割方法。基于边缘的分割方法基于特定理论的分割方法。深度学习常见应用5.图像分割从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像素赋予相同的编号。对街道车辆图像进行分割的结果,如下图所示。深度学习常见应用给出一个图像,会自动生成介绍这个图像的文字,这种处理文字的方法也叫神经图像标题(Neu
8、特征表示上计算欧式距离(内容损失函数)。得到的图像与原图内容相似,但像素级别不一定相似,且所得图像更具鲁棒性。输入两个图像,计算机会生成一个新的图像。两个输入图像中,一个称为“内容图像”如右上图所示,另外一个称为“风格图像”如右下图所示。深度学习常见应用7.图像风格转换如果将梵高的绘画风格应用于内容图像上,那么深度学习会按照要求绘制出新风格,其输出图像如右图所示。深度学习常见应用有一种新的研究,能实现在生成图像的过程中不需要另外输入任何图像,只要前期使用大量的真实图像让网络进行学习,即可由网络自动画出新的图像。目前常见的生成模型有VAE系列、GAN系列等。其中GAN系列算法近年来取得了巨大的
9、进展,最新GAN模型产生的图片效果达到了肉眼难辨真伪的程度。深度学习常见应用8.图像生成下面左图是为计算机提供的真实图像,计算机根据真实图像生成的假图像下面右图所示。深度学习常见应用情感分析最核心的问题就是从一段文字中判断作者对主体的评价是好评还是差评。针对通用场景下带有主观描述的中文文本,利用深度学习算法自动判断该文本的情感极性类别并给出相应的置信度,情感极性分为积极、消极、中性或更多维的情绪,情感分析的例子如右图所示。深度学习常见应用9.情感分析无人驾驶被认为是强化学习短期内能技术落地的一个应用方向,很多公司投入大量资源在无人驾驶上,如百度、Uber、谷歌无人车等,其中百度的无人巴士“
10、阿波龙”已经在北京、武汉等地展开试运营,自动无人驾驶的行车视野如下图所示。利用深度学习算法主要用传感器来指挥操纵车辆,创造一个完全智能调度的移动出行网络。深度学习常见应用10.无人驾驶常用的机器翻译模型有Seq2Seq、BERT、GPT、GPT-2等,其中OpenAI提出的GPT-2模型参数量高达15亿个,甚至发布之初以技术安全考虑为由拒绝开源GPT-2模型。目前深度学习在机器翻译领域也取得了很大的进步。如科大讯飞的翻译机支持多语种离线翻译(英语、日语、韩语、西班牙语、法语等),拍照翻译,更厉害的是,四川话、河南话、东北话、山东话等也能顺利翻译。除了日常的对话外,在行业领域的翻译更是威猛,如
11、外贸、能源、法律、体育、电力、医疗、金融、计算机等,都在支持的范围内。深度学习常见应用11.机器翻译科大讯飞翻译机下面左图所示,其实时翻译记录如下面右图所示。深度学习常见应用从文本中生成人造的语言,通常被称为文本转语音(TTS),它有许多的应用,如语音驱动的设备、导航系统和视力障碍者设备中不可缺少的工具。从根本上说,TTS能让人在不需要视觉交互的情况下与技术进行互动。百度研究院发布的DeepVoice是一个文本到语音转换系统,完全由深度神经网络构建。文本到语音的转换将自然语言的文本很自然流畅的变为语音,也因此出现了语音小说,免去了读者阅读的麻烦。深度学习常见应用12.文本到语音转换自动识
12、别用户手写体文字,并将其直接转化为计算机可以识别的文字。对用户手写字体字形进行提取,其中包括利用文本行的水平投影进行行切分,以及利用文本行的垂直投影进行字切分。将提取的用户手写体字形特征向量与计算机的字形特征向量进行匹配,并建立用户手写体与计算机字体的对应关系,生成计算机可识别的文字。深度学习常见应用13.手写文字转录图像分类的核心是从给定的分类集合中,给图像分配一个标签的任务。实际上,图像分类是分析一个输入图像并返回一个将图像分类的标签。标签总是来自预定义的可能类别集。利用深度学习算法可以实现对猫的图像进行分类,如右图所示。深度学习常见应用14.图像分类1深度学习应用技术目录深度简介学习
14、度学习不仅突破了图像分类的技术瓶颈,同时也突破了物体识别的技术瓶颈,物体识别的难度比图像分类更高。在物体识别问题中,人脸识别是应用非常广泛的技术,它既可以应用于娱乐行业,又可以应用于安防、风控行业。在计算机视觉领域,光学字符识别(OpticalCharacterRecognition,OCR)也是使用深度学习较早的领域之一。光学字符识别在工业届的应用也十分广泛。除此之外,谷歌图书通过文字识别技术将扫描的图书数字化,从而实现图书内容的搜索功能。深度学习应用技术1.深度学习与计算机视觉自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学中令人兴奋的领域,
15、涉及人类交流。它包含机器理解,解释和生成人类语言的方法。在八十年代初期,语法阶段开始了,语言学家发展了不同的语法结构,并开始将与用户意图的短语关联起来,开发出许多自然语言处理工具,如SYSTRAN、METEO等,在翻译、信息检索中被大量使用。九十年代是统计语言处理的时代,在大多数基于NLP的系统中,使用了许多新的收集数据的方法,例如使用语料库进行语言处理或使用基于概率和分类的方法处理语言数据。2000年初期,在自然语言学习会议上,出现了许多有趣的NLP研究,例如分块、命名实体识别和依赖解析等。随后提出的许多基于递归神经网络和长短时记忆模型被广泛使用。深度学习与应用技术2.深度学习与自然语言处
17、。到2012年,基于深度学习的语音识别模型已取代混合高斯模型,并成功将谷歌语音识别的错误率降低了20%,这个改进幅度超过了过去很多年的总和。基于深度学习的语音识别被应用到了各个领域,其中最熟悉的是苹果公司推出的Siri系统就存在语言识别功能,Siri系统可以对用户的语音输入进行识别并完成相应的操作功能,这也在很大程度上方便用户使用。除此之外,另外一个成功应用语音识别的系统是微软的同声传译系统。在没有深度学习之前,要完成同声传译系统中的任意一个部分都是非常困难的。而随着深度学习的发展,语音识别、机器翻译以及语音合成都实现了巨大的技术突破。如今,微软研发的同声传译系统已经被成功地应用到Skype网
20、及诸如Torch、TensorFlow、Caffe和PyTorch之类的深度学习框架兴起,深度学习的使用在过去几年中得到了极大的发展。使用深度学习可以实现一些很流行的应用,如图像分类、语音识别、机器翻译和自动驾驶的无人车。在将普通的、没有显示文字的图像赋予计算机时,计算机会通过对象检测和词典的帮助,获得图像的标题。深度学习与应用技术人工智能(Artificialintelligence,AI)是计算机科学的一个分支,它企图了解智能的本质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,对模拟、延伸和扩展人的智能的理论、方法和技术进行研究与开发,是一门技术科学。人工智能目前分为弱人工
21、智能和强人工智能和超人工智能。弱人工智能:弱人工智能(ArtificialNarrowIntelligence,ANI),只专注于完成某个特定的任务,例如语音识别、图像识别和翻译等是由于弱人工智能只能处理较为单一的问题,且发展程度并没有达到模拟人脑思维的程度,所以弱人工智能仍然属于“工具”的范畴,与传统的“产品”在本质上并无区别。深度学习与应用技术5.深度学习与人工智能强人工智能:强人工智能(ArtificialGenerallnteligence,AGI),属于人类级别的人工智能。在各方面都能和人类比肩,它能够进行思考、计划、解决问题、抽象思维、理解复杂理念、快速学习和从经验中学习
22、等操作,并且和人类一样得心应手。超人工智能:超人工智能(ArtificialSuperintelligence,ASI),在几乎所有领域都比最聪明的人类大脑都聪明许多,包括科学创新、通识和社交技能。在超人工智能阶段,人工智能已经跨过“奇点”,其计算和思维能力已经远超人脑。此时的人工智能已经不是人类可以理解和想象。简而言之,机器学习是实现人工智能的一种方法,而深度学习是实现机器学习的一种技术。可以说,人工智能的根本在于智能,而机器学习则是部署支持人工智能的计算方法,深度学习是实现机器学习的一种方式。深度学习与应用技术1深度学习应用技术目录深度简介学习2TensorFlow简介32015年,
23、Google宣布推出全新的机器学习开源工具TensorFlow,是基于深度学习基础框架DistBelief构建而成,主要用于机器学习和深度神经网络,一经推出就获得了较大的成功,并迅速成为用户使用最多的深度学习框架,此外,深度学习框架还有Caffe、Keras、PaddlePaddle等。目前深度学习框架主要有TensorFlow、Caffe、Keras、PaddlePaddle、Torch、CNTK等。这些深度学习框架被应用于计算机视觉、自然语言处理、语音识别、机器学习等多个领域。TensorFlow简介Caffe(ConvolutionalArchitectureforFastFea
24、tureEmbedding)是一个高效的深度学习框架,支持命令行、Python和MATLAB接口,既支持在CPU上运行,又可以在GPU上运行。Caffe的一大优势是拥有大量的训练好的经典模型,如AlexNet、VGG,以及其他state-of-the-art的模型,如ResNet。因为Caffe知名度较高,所以被广泛地应用于前沿的工业界和学术界,许多提供源码的深度学习的论文都是使用Caffe作为实现模型的工具。Caffe在计算机视觉领域中的应用尤其多,可以用于人脸识别、图片分类、位置检测、目标追踪等。虽然Caffe主要面向学术圈和研究者。Caffe的优点概括起来为全平台支持和性能优异,不足
27、的计算会使用OpenMP、SSE进行优化,GPU上使用CUDA、cutorch、cunn、cuDNN进行优化,同时还有cuda-convnet的wrapper。Torch还有很多第三方的扩展可以支持RNN,使得Torch基本支持所有主流的网络。Torch中新的Layer依然需要用户自己实现,可以使用C+或CUDA来定义。各深度学习框架对比3.TorchCNTK是微软开发的深度学习框架,目前已经发展成一个通用的、跨平台的深度学习系统,在语音识别领域的使用尤其广泛。CNTK拥有丰富的神经网络组件,使得用户不需要编写底层的C+或CUDA,就能通过组合这些组件设计新的、复杂的Layer。同样,CNT
28、K也支持CPU和GPU两种开发模式。CNTK以计算图的形式描述结构,叶子节点代表输入或者网络参数,其他节点代表计算步骤。CNTK同时也拥有较高的灵活度,通过配置文件定义网络结构,通过命令行程序执行训练,支持构建任意的计算图,支持AdaGrad、RmsProp等优化方法。各深度学习框架对比4.CNTK各类框架的特点如下表所示。各深度学习框架对比框架机构支持语言优点缺点CaffeBVLCPython/c+通用性CNTK好,非常稳健,非常快速性能优异,几乎全平台支持不够灵活,安装比较困难,需要解决大量的依赖包KerasfcholletPython语法明晰,文档友好,使用简单,入门最容易不够灵活,用
30、入门比较困难。必须一遍又一遍重新发明轮子(封装好的组件、库),过于复杂的系统设计TensorFlow被广泛应用于各种机器学习算法的编程实现,由谷歌人工智能团队开发和维护,拥有包括TensorFlowHub、TensorFlowExtended、TensorFlowProbability、TensorFlowLite、TensorFlowResearchCloud等在内的多个项目以及各类应用程序接口,具体介绍如下。TensorFlow是一个采用数据流图,用于数值计算的开源软件库,如右图所示,节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量。TensorFl
31、ow可用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。TensorFlow生态TensorFlowHub是一个允许用户发布、共享和使用TensorFlow模块的库开发项目。用户可以将TensorFlow数据流图或其部分使用Hub进行封装并移植到其他问题中再次利用,TensorFlowHub页面列出了由谷歌和DeepMind提供的封装模型,其主题包括字符嵌入、视频分类和图像处理。TensorFlow生态1.TensorFlowHubTensorFlowExtended(TFX)是谷歌基于TensorFlow开发的产品级机器学习平台,其目标是对产品开
32、发中的模型实现、分析验证和业务化操作进行整合,在实时数据下完成机器学习产品的标准化生产。TFX包括三个算法库,分别是TensorFlowDataValidation、TensorFlowTransform和TensorFlowModelAnalysis。其中TensorFlowDataValidation对机器学习数据进行统计描述和验证、TensorFlowTransform对模型数据进行预处理、TensorFlowModelAnalysis对机器学习模型进行分析,提供表现评分,另有TensorFlowServing作为模型业务化的高性能系统,提供模型接口和管理。Tens
33、orFlow生态2.TensorFlowExtendedTensorFlowProbability(TFP)是在TensorFlowPythonAPI基础上开发的统计学算法库,其目标是方便用户将概率模型和深度学习模型相结合使用。TFP包括大量概率分布的生成器、支持构建深度网络的概率层、提供变分贝叶斯推断和马尔可夫链蒙特卡罗方法以及一些特殊的优化器,包括Nelder-Mead算法(一种求解多元函数局部最小值的算法)、BFGS算法(BroydenFletcherGoldfarbShanno,一种求解无约束非线性优化问题的迭代算法)和SGLD(StochasticGradientLa
35、较为频繁的深度学习框架之一,TensorFlow的特性主要包含以下几种。多环境支持多语言支持自动求微分TensorFlow特性TensorFlow可以在CPU、GPU和TPU上运行,以及台式计算机、服务器、移动端、云端服务器等各个终端上运行,同时能够很好地运行在移动端,如安置设备、iOS、树莓派等。TensorFlow特性1.多环境支持TensorFlow有一个合理的C+使用界面,也有一个易用的Python使用界面来构建和执行graphs,可以直接编写Python/C+程序,也可以通过交互式的ipython界面来实现。TensorFlow提供了Python、C+、Java接口来构建用户的程序,
37、的广泛认可。TensorFlow2可以在程序调试阶段使用动态图,快速建立模型、调试程序;在部署阶段,采用静态图机制,从而提高模型的性能、部署能力以及执行效率。在TensorFlow2中,计算图在性能方面很强大,用户可以使用装饰器tf.function,以便将功能块作为单个图运行,这是通过TensorFlow2强大的Autograph功能完成的,使得用户可以优化功能并增加可移植性。TensorFlow2是一个与TensorFlow1.x使用体验完全不同的框架,TensorFlow2不兼容TensorFlow1.x的代码,同时在编程风格、函数接口设计等上也大相径庭,TensorFlo
38、w1.x的代码需要依赖人工的方式迁移,自动化迁移方式并不靠谱。TensorFlow2将包含许多API的变更,相比于TensorFlow1,TensorFlow2主要有以下几点变化。TensorFlow的改进许多API在TensorFlow2中已经消失或移动,使API更加一致(统一RNN,统一优化器),并通过EagerExecution执行更好地与Python运行时集成。例如,删除tf.app、tf.flags等,转而支持现在开源的absl-py,重新安置tf.contrib中的项目,并清理主要的tf.*命名空间,将不常用的函数移动到像tf.math这样的子包中。TensorFlow
39、的改进1.API清理在TensorFlow1.x中,代码的编写分为两个部分:构建静态计算图和创建一个Session去执行计算图,使得代码编写较为麻烦。在TensorFlow2默认EagerExecution模式下不需要创建Session来运行静态计算图,也不需要创建Session查看代码结果。EagerExecution的一个值得注意的地方是不再需要tf.control_dependencies(),因为所有代码按顺序执行(在tf.function中,带有副作用的代码按写入的顺序执行)。TensorFlow的改进2.EagerExecution模式TensorFlow1.x
40、严重依赖于隐式全局命名空间。当调用tf.Variable()时,它会被放入默认图形中。恢复tf.Variable(),需要先知道变量的创建名称,如果用户无法控制变量的创建,那么将很难做到。最终各种机制激增,试图帮助用户再次找到其的变量,并寻找框架来查找用户创建的变量:变量范围、全局集合、辅助方法。如tf.get_global_step()、tf.global_variables_initializer()、优化器隐式计算所有可训练变量的梯度等,在TensorFlow2中取消了所有这些机制(Variables2.0RFC),支持默认机制:跟踪变量。TensorFlow的改进3.全局变量s
41、ession.run()调用几乎就像一个函数调用:指定输入和要调用的函数,然后返回一组输出。在TensorFlow2中,可以使用tf.function()来装饰Python函数以将其标记为JIT编译,以便TensorFlow将其作为单个图形运行(Functions2.0RFC)。这种机制允许TensorFlow2获得图形模式的好处,如可以优化功能(节点修剪,内核融合等),该功能可以导出/重新导入(SavedModel2.0RFC),允许用户重用和共享模块化TensorFlow功能。TensorFlow的改进4.功能本章主要介绍深度学习的基本定义以及其应用领域,包括物体检测、视觉定位
42、、物体测量、物体分拣、图像分割、图像的生成等应用领域。分别介绍了深度学习与计算机视觉、自然语言处理、语言识别、机器学习和人工智能间的关系。介绍了常用的深度学习基本框架。以及TensorFlow的生态和特征小结TensorFlow2快速入门1训练一个线性模型目录TensorFlow2环境搭建2TensorFlow2深度学习通用流程3TensorFlow2和其他Python库的安装方法一样,使用“pipinstalltensorflow”命令即可安装。注意安装TensorFlow2时,需要根据电脑是否具有相应GPU来确定是安装性能较强的GPU版本还是性能一般的CPU版本。Tenso
43、rFlow2环境搭建TensorFlowCPU版本的安装较为简单,可以直接通过命令进行安装。但是,为了处理各种不同的数据类型,同时,在逻辑判断时,会引入大量的分支跳转和中断等处理,这些都使得CPU的内部结构异常复杂,在计算量大时,CPU的计算功能也相对较弱。国内使用pip命令安装库时,可能会出现下载速度缓慢甚至网络连接断开的情况,配置国内源可以提高pip下载的速度,只需要在pipinstall命令后面带上“-i源地址”参数即可。例如,使用清华源安装pandas库,首先打开AnacondaPrompt,输入如下命令即可自动下载并安装pandas库。安装TensorFlowCPU版本
44、常用的方法有以下3种。搭建TensorFlowCPU环境用户在默认情况下下载TensorFlow速度较慢或使用其他镜像源没有TensorFlow对应版本时,可以更换默认源后,再进行库的下载安装,步骤如下。打开AnacondaPrompt,输入如下执行命令,更换默认源为清华源。执行pip命令下载安装TensorFlowCPU版本。更换默认源并安装TensorFlowCPU的安装界面如下图所示。搭建TensorFlowCPU环境1.方法一较为简单的,也是最为常用的方法是,用户可以直接使用pipinstall命令并带上“-i源地址”参数进行TensorFlow下载安装。打开Anac
45、ondaPrompt,执行pip命令进行下载安装。直接在pipinstall命令后加“-i源地址”对TensorFlowCPU进行安装的界面如下图所示。搭建TensorFlowCPU环境2.方法二在安装TensorFlow时,可能会出现“Cannotuninstallwrapt.Itisadistuilsinstalled.”这样的错误,需要先更新wrapt版本,再安装下载TensorFlow,步骤如下。打开AnacondaPrompt。执行pipinstall命令更新wrapt为最新版本。执行pipinstall命令加“-i源地址”下载安装TensorFl
46、owCPU版本。搭建TensorFlowCPU环境3.方法三更新wrapt版本,并安装TensorFlowCPU的安装界面如下图所示。搭建TensorFlowCPU环境安装TensorFlow完成后可以验证其是否安装成功,具体验证步骤如下。打开CMD,输入“ipython”执行命令,进入ipython交互式终端。在ipython交互式终端中输入代码“importtensorflowastf”。若运行成功,表示TensorFlowCPU安装成功,如下图所示。搭建TensorFlowCPU环境目前常见的深度学习框架都是基于NVIDIA的GPU显卡进行加速运算,因此需要安装NVI
47、DIA提供的GPU加速库CUDA程序。在安装CUDA之前,需确认计算机是否具有支持CUDA程序的NVIDIA显卡设备。如果计算机没有NVIDIA显卡,如部分计算机显卡生产商是AMD或Intel,那么会无法安装CUDA程序。在安装TensorFlowGPU版本前,需要检查tensorflow-gpu版本、CUDA驱动版本、cuDNN驱动版本与Python版本是否匹配,如果不匹配,那么可能会导致TensorFlow安装失败。以Windows10系统为例,安装TensorFlowGPU版本的步骤如下。搭建TensorFlowGPU环境打开CUDA程序的官网下载CUDA10.0版本,依次选择
48、“Windows”平台“x86_64”架构“10”系统“exe(local)”本地安装包,最后单击“Download(2.1GB)”按钮即可下载CUDA安装软件,如下图所示。搭建TensorFlowGPU环境1.安装CUDA下载完成后,打开安装软件,同意NVIDIA软件许可协议并继续,选择“自定义(高级)”选项,如下图所示,单击“下一步”按钮进入自定义安装选项。搭建TensorFlowGPU环境在这里需要安装和取消不需要安装的程序组件,在CUDA节点下,取消勾选“VisualStudioIntegration”选项,如下图所示,单击“下一步”按钮即可正常安装。搭建TensorFl
49、owGPU环境在CUDA软件安装完成后,打开文件浏览器,在“我的电脑”上右键单击选择“属性”,选择“高级系统属性”“环境变量”,在系统变量中检查中是否存在“CUDA_PATH”变量和“CUDA_PATH_V10_0”两个变量,如下图所示,如果存在,那么接下来测试CUDA是否安装成功,如果不存在,那么需要重新安装CUDA。搭建TensorFlowGPU环境测试CUDA软件是否安装成功。打开CMD命令行,输入“nvcc-V”即可打印当前的CUDA等的版本信息,如下图所示,即表明CUDA安装成功。搭建TensorFlowGPU环境CUDA并不是针对神经网络专门的GPU加速库,它面向各种需要并
51、配。搭建TensorFlowGPU环境下载cuDNN文件完成后,解压并进入“cudnn-10.0-windows10-x64-v”文件夹,将名为“cuda”的文件夹重命名为“cudnn”,并复制该文件夹至CUDA的安装路径C:ProgramFilesNVIDIAGPUComputingToolkitCUDAv10.0,如下图所示,此时可能会弹出需要管理员权限的对话框,选择继续即可。搭建TensorFlowGPU环境完成cuDNN安装后,为了使系统能够感知到cuDNN文件的位置,需要额外配置其环境变量。根据上小节打开“环境变量”对话框,在“系统变量”一栏中选中“Path”环境变量,单
52、击“编辑”按钮,打开“编辑环境变量”对话框。单击“新建”按钮,输入cuDNN的安装路径“C:ProgramFilesNVIDIAGPUComputingToolkitCUDAv10.0cudnnbin”,并通过“上移”按钮将变量置顶。搭建TensorFlowGPU环境完成配置后的环境变量应该包括以下如下图所示的前3个。注意,具体路径可能和实际路径略有不同,读者应根据实际情况而定。搭建TensorFlowGPU环境打开AnacondaPrompt,使用清华源下载安装TensorFlowGPU版本,执行pipinstall命令进行安装。命令安装tensorflow-gpu如下图所
53、示。TensorFlow2环境搭建3.安装TensorFlowGPU版本在CMD命令行中,输入“ipython”进入ipython交互式终端,输入“importtensorflowastf”命令。如果没有错误产生,那么继续输入“tf.test.is_gpu_available()”命令测试GPU是否可用如果为True,那么说明TensorFlowGPU安装成功;如果为False,那么说明安装失败,如下图所示。搭建TensorFlowGPU环境4.验证TensorFlowGPU是否安装成功1训练一个线性模型目录TensorFlow2环境搭建2TensorFlow2深度学习
54、通用流程3在接触TensorFlow前,读者可能学习过众多的库,如NumPy库、pandas库、scikit-learn库等,在机器学习中,类似于鸢尾花分类这样的模型,常用scikit-learn库对模型进行构建。在已有scikit-learn库模型构建的情况下,可进一步运用TensorFlow2实现深度神经网络的搭建与应用,即深度学习的实现。本节将通过用TensorFlow2训练一个简单线性模型,来展示TensorFlow2的工作机制和基本流程。训练一个线性模型现存在一份拥有100个样本的数据集,需根据这100个样本数据构建一个线性模型,找出合适的W和b,使得y=wx+b。数据的基本
55、形式如下表所示。问题描述xy00.8521031226630921995.57730497520.85329925866562364845.64059120940.7006920155.751730037在运用TensorFlow2训练线性模型之前,需要了解TensorFlow2的基本数据类型。在TensorFlow2程序中,所有的数据类型都通过张量的形式来表示。张量是具有统一数据类型的n维数组或列表。所有张量都是不可变的,不能更新张量的内容,只能创建新的张量。例如,创建一个张量b=1,2,2,3,其中张量b的阶数为2,数据类型为整型。
56、关于张量的阶、维度和数据类型的基本介绍如下。TensorFlow2基本数据类型从功能的角度上看,张量可以被简单理解为多维数组,其中零阶张量表示标量(scalar),即为一个数;第一阶张量为向量(vector),即为一个一维数组;第n阶张量可以理解为一个n维数组。但张量在TensorFlow中的实现并不是直接采用数组的形式,而是对TensorFlow中的运算结果进行引用。在张量中并没有真正保存数字,它保存的是得到这些数字的计算过程。在TensorFlow2中,常用阶来表示张量的维数,如下表所示。TensorFlow2基本数据类型1.阶在TensorFlow2中,常用阶来表示张量的维
57、数,如下表所示。TensorFlow2基本数据类型阶数字实例Python实例0标量(只有大小)s=4831向量(有大小和方向)v=1.1,2.2,3.32矩阵(数据表)m=1,2,3,4,5,6,7,8,933阶(数据立体)t=2,4,6,8,10,12,14,16,18nn阶在张量中,维度这个属性描述了一个张量的维度信息,是张量一个很重要的属性。在TensorFlow2中,描述张量维度的3种记号分别是阶、形状和维数,三者之间的关系如下表所示。TensorFlow2基本数据类型2.维度阶形状雏形实例00-D一个0维张量,一个标
58、量1D01-D一个1维张量的形式52D0,D12-D一个2维张量的形式1,1,1,2,2,2,3,3,33D0,D1,D23-D一个3维张量的形式1,2,3,4,5,6,7,8,9nD0,D1,.Dnn-D一个n维张量的形式D0,D1,.Dn除维度外,张量还有一个数据类型属性,可以为张量指定任意一个类型,每一个张量都有一个唯一的类型,其数据类型如右表所示。TensorFlow2基本数据类型3.数据类型数据类型Python类型描述DT_FLOATtf.float3232位浮点数DT_DOUBLEtf.float6464位浮点数DT_INT6
59、46464位有符号整型DT_INT323232位有符号整型DT_INT161616位有符号整型DT_INT888位有符号整型DT_UINT8tf.uint88位无符号整型DT_STRINGtf.string可变长度的字节数组,每一个张量元素都是一个字节数组DT_BOOLtf.bool布尔型DT_COMPLEX64plex64由两个32位浮点数组成的复数、实数和虚数DT_QINT32tf.qint32用于量化Ops的32位有符号整型DT_QINT8tf.qint8用于量化Ops的8位有符号整型DT_QUINT8tf.quint8用于量化Ops的8位无符号整型在解决线性问题中,构建、训练网络并对