深度学习应用开发 课件汇 cha1 1-人工智能与深度学习-cha4 3-全连接神经网络_第1页
深度学习应用开发 课件汇 cha1 1-人工智能与深度学习-cha4 3-全连接神经网络_第2页
深度学习应用开发 课件汇 cha1 1-人工智能与深度学习-cha4 3-全连接神经网络_第3页
深度学习应用开发 课件汇 cha1 1-人工智能与深度学习-cha4 3-全连接神经网络_第4页
深度学习应用开发 课件汇 cha1 1-人工智能与深度学习-cha4 3-全连接神经网络_第5页
已阅读5页,还剩312页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能的概念介绍01任务机器学习的概念介绍02任务目录深度学习的概念介绍03任务人工智能与机器学习、深度学习的关系04任务1人工智能的概念介绍1人工智能的概念介绍上世纪50年代,计算机科学家们就提出了“人工智能(ArtificialIntelligence,AI)”的概念,人工智能是一个广泛的概念,人工智能的目的就是让计算机能够象人一样思考。现在,人工智能已经发展为一门广泛的交叉和前沿科学,涉及到计算机科学、心理学、哲学和语言学等学科,也广泛的应用到语音识别、图像识别、自然语言处理等领域。人工智能是计算机科学的一个重要分支,是对人类认知思维的抽象和模拟,用机器实现人类智能,做人类可以做的事情。人工智能通常可分为弱人工智能和强人工智能两个阶段。目前处于弱人工智能阶段,具备一定观察和感知力的机器,能做到有限的理解和推理,还远未到达能让机器习得自适应能力的强人工智能阶段。伴随着“人工智能”的崛起,出现了“机器学习”、“深度学习”等热门领域。2机器学习的概念介绍2机器学习的概念介绍机器学习(MachineLearning,ML)是指用某些算法指导计算机利用已知数据得出适当的模型,并利用此模型对新的情境给出判断的过程。机器学习的思想是对人类生活中学习过程的一个模拟,而在这整个过程中,最关键的是数据。任何通过数据训练的学习算法的相关研究都属于机器学习,包括一些成熟的经典技术,比如线性回归(LinearRegression)、K均值(K-means)、决策树(DecisionTrees)、随机森林(Random)、主成分分析(PrincipalComponentAnalysis,PCA)、支持向量机(SupportVectorMachine,SVM)以及人工神经网络(ArtificialNeuralNetworks,ANN)。2机器学习的概念介绍机器学习包括以下类型的学习模式:(1) 监督学习模式有监督学习以训练集作为系统的输入,其中每个样本都有标注信息,我们称标注信息为真实值(groundtruth)。模型的输出值与真实值得差值用损失函数来衡量(loss),采用最小损失函数执行训练过程。训练完成后,针对训练集(也称为验证集)中不相交的示例,测量模型的准确性。

监督学习模式2机器学习的概念介绍(2) 无监督学习模式无监督学习中,训练样本未按其所属的系统进行标记。无监督学习模型是识别无标签数据结构的模型。该系统寻找具有共同特征的数据,并根据数据内部知识特征对其进行聚类。这种学习算法适用于聚类问题。

无监督学习模式3深度学习的概念介绍3深度学习的概念介绍深度学习(DeepLearning,DL)的概念源于对人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像、声音和文本。深度学习的精髓在于通过监督学习或从标记的数据和算法中学习。深度学习中的每种算法都经过相同的过程,深度学习过程的以下步骤:数据处理(数据预处理);模型设计(网络结构的设计);训练模型(优化器,损失函数、计算资源);

保存并测试模型(保存并测试模型的性能,以备预测调用)4人工智能与机器学习、深度学习的关系4人工智能与机器学习、深度学习的关系严格意义上说,人工智能和机器学习没有直接关系,只不过目前机器学习的方法被大量的应用于解决人工智能的问题而已。目前机器学习是人工智能的一种实现方式,也是最重要的实现方式。早期的机器学习实际上是属于统计学,而二十世纪九十年代之前的经典人工智能跟机器学习也没有关系。所以今天的人工智能和机器学习有很大的重叠。深度学习是机器学习现在比较火的一个方向,其本身是神经网络算法的衍生,在图像、语音等富媒体的分类和识别上取得了非常好的效果。4人工智能与机器学习、深度学习的关系如果把机器学习、深度学习当成人工智能的一个子学科来看,三者关系如下图所示:

ThankYOU!目录1数据量大01任务计算力提升02任务网络规模大03任务1数据量大1数据量大早期的机器学习算法比较简单,容易快速训练,需要的数据集规模也比较小,如1936年由英国统计学家RonaldFisher收集整理的鸢尾花卉数据集Iris共包含3个类别花卉,每个类别50个样本。1998年由YannLeCun收集整理的MNIST手写数字图片数据集共包含0~9共10类数字,每个类别多达7000张图片。1数据量大图2数据集大小趋势图1

数据集样本数趋势2计算力提升2计算力提升计算能力的提升是第三次人工智能复兴的一个重要因素;传统的机器学习算法,对数据量和计算能力要求不高,通常在CPU上可训练完成;深度学习非常依赖并行加速计算设备,目前的大部分神经网络均使用NVIDIAGPU和GoogleTPU或其他神经网络并行加速芯片训练模型参数;2012年基于2块

GTX580GPU训练的AlexNet发布后,深度学习的真正潜力才得以发挥;围棋程序AlphaGoZero在64块GPU上从零开始训练了40天才得以超越所有的AlphaGo历史版本;自动网络结构搜索算法使用了800块GPU同时训练才能优化出较好的网络结构。2计算力提升GPU(GraphicsProcessingUnit),图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器;TPU(TensorProcessingUnits),是由Google设计的定制机器学习芯片,用于成功执行其常规机器学习工作负载,专为Google的深度学习框架TensorFlow而设计.

2计算力提升3网络规模大3网络规模大早期的感知机模型和多层神经网络层数只有1层或者2~4层,网络参数量也在数万左右;随着深度学习的兴起和计算能力的提升,AlexNet(8层),VGG16(16层),GoogLeNet(22层),ResNet50(50层),DenseNet121(121层)等模型相继被提出;同时输入图片的大小也从28x28逐渐增大,变成224x224,299x299等,这些使得网络的总参数量可达到千万级别。3网络规模大ThankYOU!目录1深度学习的快速发展期01任务深度学习的爆发期02任务1深度学习的快速发展期1深度学习的快速发展期2006年,深度学习(DL)元年。是年,Hinton提出了深度置信网络(DeepBeliefNet:DBN),在世界顶级学术期刊《Science》上提出观点:(1)多层人工神经网络模型有很强的特征学习能力,深度学习模型学习得到的特征数据对原始数据有更本质的代表性,这将大大便于分类和可视化问题;(2)对于深度神经网络很难训练达到最优的问题,可以采用逐层训练方法解决。将上层训练好的结果作为下层训练过程中的初始化参数。1深度学习的快速发展期图2DBN网络架构层叠的多个RBM网络组成DBN结构,来提取需要处理对象的特征,然后再用分类器进行分类。1深度学习的快速发展期2011年,ReLU激活函数被提出,该激活函数能够有效的抑制梯度消失问题;

图3ReLU激活函数微软首次将DL应用在语音识别上,构建了深度神经网络模型,将语音识别错误率降低了20%~30%,取得了重大突破。2深度学习的爆发期2深度学习的爆发期1998年LeCun大神提出卷积神经网络LeNet-5网络,用来解决手写数字识别的问题。LeNet-5被誉为卷积神经网络的‘HelloWorld’图4LeNet-5架构图2深度学习的爆发期2012年,Hinton团队为了证明深度学习的潜力,参加首届ImageNet图像识别大赛,构建名为AlexNet的CNN网络,获得冠军。图5AlexNet架构图2深度学习的爆发期AlexNet的创新点;首次采用ReLU激活函数,增加收敛速度;完全采用有监督训练,DL方法开始向有监督学习转变;扩展了LeNet-5,引入Dropout减小过拟合;首次采用GPU加速训练。2深度学习的爆发期2013~2017,通过ImageNet图像识别竞赛,GPU硬件的不断进步,涌现了性能更好的CNN模型, CNN 在其他计算机视觉任务中也开始应用开来。2017年至今,深度学习算法不断进步,在计算机视觉中的各个领域都有创新网络的提出。ThankYOU!目录计算机视觉01任务自然语言处理02任务强化学习03任务1计算机视觉1计算机视觉计算机视觉是深度学习应用最为广泛的一个领域,计算机视觉中包括:图像识别(ImageClassification)目标检测(ObjectDetection)语义分割(SemanticSegmentation)视频理解(VideoUnderstanding)图片生成(ImageGeneration)1计算机视觉图像识别(ImageClassification)图像识别(ImageClassification),也叫图像分类,是一种常见的分类问题。计算机视觉中图像分类算法常采用神经网络作为核心,算法的输入为图像数据,输出值为当前图像样本所属类别的概率,通常选取输出概率值最大的类别作为样本的预测类别。1计算机视觉目标检测(ObjectDetection)目标检测(ObjectDetection),是指通过算法自动检测出图片中目标物体的类别及大致位置,然后用边界框(BoundingBox)表示,并标出边界框中物体的类别信息。1计算机视觉语义分割(SemanticSegmentation)语义分割(SemanticSegmentation)是通过算法自动分割并识别出图片中的内容,可以将语义分割理解为每个像素点的分类问题,分析每个像素点属于物体的类别。1计算机视觉视频理解(VideoUnderstanding)随着深度学习在2D图片的相关任务上取得较好的效果,具有时间维度信息的3D视频理解任务受到越来越多的关注。常见的视频理解任务有视频分类,行为检测,视频主体抽取等1计算机视觉图片生成(ImageGeneration)图片生成(ImageGeneration),通过学习真实图片的分布,并从学习到的分布中采样而获得逼真度较高的生成图片。图像风格迁移2自然语言处理2自然语言处理1、机器翻译(MachineTranslation)过去的机器翻译算法通常是基于统计机器翻译模型,这也是2016年前Google翻译系统采用的技术。2、2016年11月,Google基于Seq2Seq模型上线了Google神经机器翻译系统(GNMT),首次实现了源语言到目标语言的直译技术,在多项任务上实现50~90%的效果提升。3、常用的机器翻译模型有Seq2Seq,BERT,GPT,GPT-2等,其中OpenAI提出的GPT-2模型参数量高达15亿个,甚至发布之初以技术安全考虑为由拒绝开源GPT-2模型。机器翻译(MachineTranslation)2自然语言处理1、聊天机器人(Chatbot)聊天机器人也是自然语言处理的一项主流任务。2、通过机器自动与人类对话,对于人类的简单诉求提供满意的自动回复,提高客户的服务效率和服务质量。3、常应用在咨询系统、娱乐系统、智能家居等中。聊天机器人(Chatbot)3强化学习3强化学习强化学习(ReinforcementLearning,RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习技术常用语机器人(Robotics)和自动驾驶(AutonomousDriving)领域中。3强化学习机器人(Robotics)在真实环境中,机器人的控制也取得了一定的进展。如UCBerkeley在机器人的模仿学习(ImitationLearning)、少样本学习(MetaLearning)、元学习(Few-shotLearning)等方向取得了不少进展。波士顿动力公司的机器人机器人(Robotics)3强化学习自动驾驶(AutonomousDriving)被认为是强化学习在短期内能技术落地的一个应用方向,很多公司投入大量资源在自动驾驶上,如百度、Uber、Google无人车等。百度Apollo自动驾驶汽车自动驾驶(AutonomousDriving)ThankYOU!目录深度学习框架概念01任务主流的深度学习框架02任务TensorFlow基础框架03任务1深度学习框架概念1深度学习框架概念深度学习框架是一种为了降低深度学习开发门槛而开发的深度学习工具,框架包含库、数据集和预训练模型等资源。深度学习框架可以简化模型的开发过程,复杂深度学习模型开发被大大简化,成为AI开发者的必用利器。开发者不需要从复杂的神经网络开始编代码,可以依据需要调用框架内置的模型,也可以在已有模型的基础上增加layer,选择分类器。目前,TensorFlow和PyTorch框架为主力深度学习框架,其中TensorFlow市场需求最多,且部署能力强,在应用部署中使用较多。PyTorch在学术界、学术论文中使用较多。2主流的深度学习框架介绍2深度学习框架介绍Theano

最早的深度学习框架之一,是一个基于Python语言、定位底层运算的计算库,Theano同时支持GPU和CPU运算。缺点:Theano开发效率较低,模型编译时间较长,同时开发人员转投TensorFlow等原因,Theano目前已经停止维护。2深度学习框架介绍Scikit-learn一个完整的面向机器学习算法的计算库,内嵌了常见的传统机器学习算法支持,文档和案例也较为丰富。

缺点:但是Scikit-learn并不是专门面向神经网络而设计的,不支持GPU加速,对神经网络相关层实现也较欠缺。2深度学习框架介绍Caffe由华人博士贾扬清在2013年开发,主要面向使用卷积神经网络的应用场合,并不适合其他类型的神经网络的应用。Caffe的主要开发语言是C++,也提供Python语言等接口,支持GPU和CPU。开发时间早,知名度高,2017年Facebook推出了Caffe的升级版本Cafffe2,且Caffe2目前已经融入到PyTorch库中。2深度学习框架介绍Torch

是一个非常优秀的科学计算库,基于较冷门的编程语言Lua开发。Torch灵活性较高,容易实现自定义网络层,这也是PyTorch继承获得的优良基因。缺点:但是由于Lua语言使用人群较小,Torch一直未能获得广泛应用。2深度学习框架介绍MXNET由华人博士陈天奇和李沐等人开发,MXNET是亚马逊公司的官方深度学习框架,采用了命令式编程和符号式编程混合方式,灵活性高,运行速度快,文档和案例也较为丰富。PyTorch是Facebook基于原有的Torch框架推出的采用Python作为主要开发语言的深度学习框架。PyTorch借鉴了Chainer的设计风格,采用命令式编程,使得搭建网络和调试网络非常方便。尽管PyTorch在2017年才发布,但是由于精良紧凑的接口设计,PyTorch在学术界获得了广泛好评。在PyTorch1.0版本后,原来的PyTorch与Caffe2进行了合并,弥补了PyTorch在工业部署方面的不足。总的来说,PyTorch是一个非常优秀的深度学习框架。2深度学习框架介绍Keras

一个基于Theano和TensorFlow等框架提供的底层运算而实现的高层框架,提供了大量方便快速训练,测试的高层接口,对于常见应用来说,使用Keras开发效率非常高。缺点:但是由于没有底层实现,需要对底层框架进行抽象,运行效率不高,灵活性一般。TensorFlow由Google于2015年发布。由于TensorFlow接口设计频繁变动,功能设计重复冗余,符号式编程开发和调试非常困难等问题,TensorFlow1.x版本一度被业界诟病。2019年,Google推出TensorFlow2正式版本,能够避免TensorFlow1.x版本的诸多缺陷。3TensorFlow基础框架3TensorFlow基础框架系统框架Tensorflow系统框架分为三层,由上而下依次是应用层、接口层和Tensorflow核心层。TensorFlow系统框架3TensorFlow基础框架系统框架的六大特性深度灵活性(DeepFlexibility)真正的可移植性(TruePortability)连接研究与产品(ConnectResearchandProduction)自动微分(Auto-Differentiation)多语言选择(LanguageOptions)最大化性能(MaximizePerformance)ThankYOU!目录1Anaconda介绍01任务Anaconda安装02任务1Anaconda介绍1Anaconda介绍Anaconda是专门为了方便使用Python进行数据科学研究而建立的一组软件包,涵盖了数据科学领域常见的Python库;并且自带了专门用来解决软件环境依赖问题的conda包管理系统。主要是提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题;Anaconda利用命令conda来进行包和环境的管理,并且已经默认安装了Python和相关的配套工具。2Anaconda安装1(1)进入Anaconda官网:/,点击Download,下载安装包,安装包较大,下载需要耐心等待。1(3)为了解决官网下载安装包较慢的问题,可以选择如下镜像源:/anaconda/archive/,这里选择适用于Windows系统较新的Anaconda版本:1(4)安装包下载好后,点击安装包,出现如下页面,依次点击Next、IAgree;1(5)选择JustMe,点击Next;1(6)选择安装目录,系统默认安装在C盘,Anaconda软件占用空间较大,可根据需要自定义安装到空间较大的盘;1(7)AdvancedOptions中的两个选项,勾选第一个,将Anaconda添加至环境变量;第二个是为系统选择默认的Python版本,这个不选,点击Install;等待安装完成后点击Next。1(8)最后的两个选项可以选,也可以不选,最后点击Finish完成安装。1(9)在Windows10的搜索框中输入anaconda,打开AnacondaPrompt命令提示符;1(10)输入python–V查看Python版本,我们发现Python版本为默认的Python3.9,至此,Anaconda环境管理器安装教程全部完成。ThankYOU!目录1创建虚拟环境01任务安装TensorFlow02任务Python第三方库的安装03任务1创建虚拟环境1创建虚拟环境Anaconda软件安装完成之后,使用软件创建虚拟环境,创建虚拟环境的途径有两个:通过Anaconda软件图形界面创建;通过命令在AnacondaPrompt中创建。1创建虚拟环境(1)搜索框输入anaconda命令,点击Anaconda图标打开软件,点击左下角Create;通过Anaconda软件图形界面创建:1创建虚拟环境(2)弹出创建新环境对话框;给新建的虚拟环境命名,这里将虚拟环境命名为tf,Python版本为3.6,点击Create;1创建虚拟环境(3)稍等片刻,在Environments一栏,会多出一个名为tf的虚拟环境。1创建虚拟环境(4)打开AnacondaPrompt命令提示符,默认打开base(root)环境,在命令提示符中输入activatetf命令,激活创建的tf环境,如图所示,表示tf虚拟环境创建成功。1创建虚拟环境创建一个名为tensorflow,Python版本为3.8的虚拟环境,打开AnacondaPrompt,输入如下命令:condacreate-ntensorflowpython=3.8使用前述方法可以查看虚拟环境信息和Python版本。通过命令在AnacondaPrompt中创建2安装tensorflow2这里我们给创建虚拟环境tensorflow配置安装包和深度学习框架,深度学习框架选择CPU版的TensorFlow2.0。步骤如下:(1)打开AnacondaPrompt,输入activatetensorflow命令激活虚拟环境tensorflow后,输入如下命令安装TensorFlow包:pip/conda

install

tensorflow

(2)如果下载太慢,可以选择从清华镜像源网站下载,命令如下:pip

install

-i/simple

tensorflow2(3)输入安装命令后,系统搜集到要安装的包,输入y,确认安装;如图所示:2(4)安装完成后,可以输入piplist命令查看虚拟环境中安装的包列表,可以查看安装的tensorflow包的版本信息,如图所示:2(5)也可以输入pipshowtensorflow命令查看tensorflow版本,如图所示:2(6)接下来测试tensorflow是否安装成功。输入python,进入python命令行模式;然后输入命令:import

tensorflow

如果没有显示任何报错信息,则tensorflow安装成功。如图所示:3Python第三方库的安装3TensorFlow安装完成之后,在开发具体的项目时,还需要安装一些Python的第三方库,这里以安装Matplotlib、NumPy和Pandas为例,介绍第三方库的安装流程,按照此方法可以安装其第三方包。3(1)MatplotlibMatplotlib是一个数据可视化工具,可以用来绘制各种图表,例如折线图、柱状图和三维图。安装命令如下:pipinstallmatplotlib3(2)NumpyNumpy是一个数学函数库,支持矩阵运算和大量数学函数运算,Numpy的数据类型支持在Matplotlib、OpenCV等多种第三方库上使用。安装命令如下:pipinstallnumpy3(3)PandasPandas是数据分析及可视化工具,支持数据处理和数据的可视化,例如读取Excel文件中的数据,并对其进行统计、运算、分析或可视化。安装命令如下:pipinstallpandas3与安装TensorFlow一样,如果安装第三方库时,下载速度比较慢,可以选择从清华镜像源网站下载,命令如下:pipinstall-i/simple库名称ThankYOU!目录1Jupyternotebook介绍01任务Jupyternotebook添加虚拟环境02任务1Jupyternotebook介绍1Jupyternotebook介绍JupyterNotebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。Anaconda已经自动安装了JupyterNotebook,我们只需要打开AnacondaPrompt,输入jupyternotebook命令就可以打开页面,本课程推荐使用JupyterNotebook执行代码,下面介绍JupyterNotebook中虚拟环境的配置。2Jupyternotebook添加虚拟环境2Jupyternotebook添加虚拟环境(1)创建虚拟环境并安装第三方库之后,需要把虚拟环境在jupyternotebook网页中显示出来:在激活的TensorFlow虚拟环境中安装ipykernel,执行命令:pipinstallipykernel将环境写入notebook的kernel中,并以名称tensorflow显示出来,执行以下命令:python-mipykernelinstall--nametensorflow2Jupyternotebook添加虚拟环境(2)启动JupyterNotebook在Windows命令提示符或AnacondaPrompt中输入jupyternotebook,打开jupyternotebook页面。2Jupyternotebook添加虚拟环境(3)新建执行文件单击界面右上角的New下拉按钮,选择tensorflow虚拟环境(Anaconda中又称为Kernel),如图所示:2Jupyternotebook添加虚拟环境(4)打开界面后,可以在方框(cell)中输入import命令导入前面安装的tensorflow、matplotlib、numpy、pandas,然后点击运行按钮或“Shift+Enter”快捷键执行代码。代码执行完毕后,方框前面的中括号由空格变成数字,代表代码执行完毕。ThankYOU!目录1TensorFlow概述01任务TensorFlow的优点02任务TensorFlow的几个基本概念03任务1初识TensorFlow1TensorFlow概述TensorFlow是Google开源的基于数据流图的、面向于深度学习算法的科学计算库,命名来源于本身的运行原理,Tensor(张量)表示N维数组,Flow(流)表示基于数据流图的计算。内部数据保存在张量(Tensor)对象上,所有的运算操作(Operation,OP)基于张量对象进行。在深度学习领域应用广泛,如深度神经网络、卷积神经网络和递归神经网络已被应用计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。2TensorFlow的优点2TensorFlow的优点真正的可移植性

引入各种计算设备的支持包括CPU/GPU/TPU,以及能够很好地运行在移动端,如安卓设备、ios、树莓派等等多语言支持

Tensorflow有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs,你可以直接写python/c++程序高度的灵活性与效率

TensorFlow是一个采用数据流图(dataflowgraphs),用于数值计算的开源软件库能够灵活进行组装图,执行图。随着开发的进展,Tensorflow的效率不断在提高TensorFlow由谷歌提供支持,谷歌投入了大量精力开发TensorFlow,它希望TensorFlow成为机器学习研究人员和开发人员的通用语言3TensorFlow的几个基本概念3TensorFlow的几个基本概念计算图(graphs):描述了计算过程,Tensorflow用图来表示计算过程。张量(tensor):Tensorflow使用tensor表示数据,每一个tensor是一个多维的数组。变量(variable):变量(Variable)是特殊的张量(Tensor),它的值可以是一个任何类型和形状的张量,变量存储的是持久张量,当训练模型时,用变量来存储和更新参数。占位符:输入变量的载体。可以理解为定义函数时的参数。操作:图中的节点为op,一个op获得/输入0个或者多个Tensor,执行并计算,产生0个或多个Tensor。会话(session):

tensorflow的运行需要在会话里面运行。3TensorFlow的几个基本概念(1)计算图(graphs):图是TensorFlow用于表达计算任务的一个核心概念,Tensorflow用图来表示计算过程,graph被定义一些操作和张量的集合3TensorFlow的几个基本概念(2)张量(tensor)TensorFlow中,张量是计算图上的数据载体,用张量统一表示所有的数据,张量在计算图的节点之间传递;张量主要有三种类型:常量tf.constant()、变量tf.Variable()、占位符tf.palceholder()张量可以看做是n维的数组,数组的维数即为张量的阶数:阶数学实例Python例子0纯量(只有大小)s=4831向量(大小和方向)v=[1.1,2.2,3.3]2矩阵(数据表)m=[[1,2,3],[4,5,6],[7,8,9]]33阶张量(数据立体)t=[[[2],[4],[6]],[[8],[10],[12]],[[14],[16],[18]]]nn阶(多维数组)....

3TensorFlow的几个基本概念(3)变量(variable)1、变量是计算图中的一种有状态节点,用于在多次执行同一计算图时存储并更新指定参数,对应了机器学习或深度学习算法中的模型参数;作为有状态节点,其输出由输入、节点操作、节点内部已保存的状态值共同作用;2、创建变量的方法有三种:使用tf.Variable()函数直接定义使用TensorFlow内置函数创建使用其他变量初始值来定义新变量3、调用语法:tf.Variable(dtype,shape=None,name=None)dtype:数据类型shape:数据维度name:张量名称

3TensorFlow的几个基本概念(4)占位符(placeholder)用于声明一个张量的数据格式,告诉系统这里会有一个这种格式的张量,但是还没有给定具体数值,具体的数值要在正式运行的时候填充。占位变量是一种TensorFlow用来解决读取大量训练数据问题的机制,它允许你现在不用给它赋值,随着训练的开始,再把训练数据传送给训练网络学习。调用语法:tf.placeholder(dtype,shape=None,name=None)dtype:数据类型shape:数据维度name:张量名称

3TensorFlow的几个基本概念(5)操作(operation):简称op,是TensorFlow图中的节点,它的输入和输出都是Tensor。作用都是完成各种操作,包括算数操作、矩阵操作、神经网络构建操作等。(6)会话(session):Tensorflow会话,在Tensorflow中是计算图的具体执行者,与图进行实际的交互。ThankYOU!目录1TensorFlow数学概念01任务矩阵的数学运算02任务TensorFlow数学运算03任务1TensorFlow数学概念1TensorFlow数学概念数学是任何机器学习算法的核心,使用TensorFlow创建应用程序之前,了解一些TensorFlow中基本的数学概念是很必要的,理解数学核心概念,有助于定义机器学习算法的解决方案。TensorFlow中经常出现的数学概念有:标量(scalar)

一个单独的数向量(vector)

一列数,即一维数组矩阵(matrix)

二维数组张量(tensor)

多维数组1TensorFlow数学概念(1)标量标量(scalar)

,也称纯量,是只有大小,没有方向的量,标量也称为0维张量。比如:一个常数,只有数值大小,没有方向。在物理学中,标量是在坐标变换的情况下,保持不变的物理量。1TensorFlow数学概念(2)向量向量(vector),也称矢量,是既有大小,又有方向的量。向量是一列数,即一维数组,向量也称为一维张量。例如,在物理学中,速度就是一个向量,1TensorFlow数学概念(3)矩阵矩阵(matrix)是一个二维数组,数组元素以行和列的格式排列。矩阵的大小由行长度和列长度定义。矩阵也称为二维张量。由m×n个数aij排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵。记作:1TensorFlow数学概念(4)张量张量(tensor)

是多维数组,标量、矢量、矩阵都可以用张量表示,只是维度不同。2矩阵的数学运算2矩阵的数学运算矩阵的数学运算包括:矩阵加法、矩阵减法、矩阵乘法、矩阵转置等运算。(1)矩阵加法两个矩阵具有相同形状的矩阵可以相加,相加表示将对应位置的元素相加,生成的矩阵与原矩阵形状相同。例如:2矩阵的数学运算(2)矩阵减法矩阵减法与矩阵加法操作类似例如:2矩阵的数学运算(3)矩阵乘法假设矩阵A(形状mxn)与B(形状pxq)相乘,必须n=q,即A的列数必须与B的行数相同,得到的结果是C(形状mxq),其中元素的算法如下:2矩阵的数学运算(4)矩阵转置矩阵转置是指把一个矩阵的列转置为行得到一个新矩阵,矩阵A的转置可以表示为:3TensorFlow实现数学运算3TensorFlow实现数学运算TensorFlow中的数学运算包括加、减、乘、除、幂次方、对数、矩阵相乘等运算。(1)加减乘除法加、减、乘、除是最基本的数学运算,分别通过tf.add()、tf.subtract()、tf.multiply()、tf.divide()函数实现,TensorFlow支持+、-、*、/运算符,一般推荐直接使用运算符来完成加、减、乘、除运算。整除、除法取余也是常见的运算之一,分别通过//和%运算符实现。示例:3TensorFlow实现数学运算(2)幂次方函数tf.pow(x,a)可以完成x的a次方运算,也可以使用x**a完成,示例:3TensorFlow实现数学运算(2)幂次方设置指数为1/a的形式,既可以实现x开a次方根的运算示例:3TensorFlow实现数学运算(2)幂次方对于一些常见的平方和平方根运算,可以使用tf.square()和tf.sqrt()实现示例:3TensorFlow实现数学运算(2)幂次方对于tf.sqrt(),为实现开二次根运算。这里开二次根的运算,相当于指数为0.5,是一个小数,所以底数也应该转换为小数。示例:3TensorFlow实现数学运算(3)矩阵乘法运算通过tf.matmul(a,b)函数实现矩阵相乘。矩阵A和B能够矩阵相乘的条件是,A的倒数第一个维度长度和B的倒数第二个维度长度必须相等。示例:ThankYOU!目录1数值型01任务字符串型02任务布尔型03任务1数值型1数值型数值型数据是TensorFlow中最常见的数据类型,标量、向量、矩阵、张量等都属于数值型。(1)标量标量的创建可以使用python语言创建,也可以使用TensorFlow框架创建,TensorFlow使用tf.constant()函数创建标量。示例:1数值型(2)向量向量是n个实数的有序集合,如[1,2.,3.3]是维度数为1,shape

=(3,)的向量,TensorFlow使用tf.constant()函数创建向量,示例:1数值型(3)矩阵矩阵是n行m列实数的有序集合。维度为2,shape为(n,m),TensorFlow使用tf.constant()函数创建矩阵,示例:1数值型(4)张量所有维度大于2的数组统称为张量。张量的每个维度也做轴(Axis),一般维度代表了具体的含义,例如shape为(2,32,32,3)的张量一共有4维,如果表示图片的数据,2代表2张图片,32代表了高、宽都是32,3代表了RGB共3个通道。TensorFlow使用tf.constant()函数创建张量,示例:2字符串型2字符串型除了丰富的数值类型外,TensorFlow还支持字符串(String)类型的数据,TensorFlow通过tf.constant()函数传入字符串对象即可创建字符串类型的张量,在tf.string模块中,提供了许多处理字符串数据的函数,如:大写化upper(),小写化lower(),拼接join(),长度length(),切分split():3布尔型2布尔型为了方便表达比较运算操作的结果,TensorFlow还支持布尔类型(bool)的张量。布尔类型的张量只需要传入Python语言的布尔类型数据,转换成TensorFlow内部布尔型即可:

ThankYOU!目录1标量的应用01任务向量的应用02任务矩阵的应用03任务多维张量的应用04任务1标量的应用1标量的应用在TensorFlow中,每种维度下的张量都有典型的应用,不同维度的张量都具有不同的物理意义和用途。标量最容易理解,它就是一个简单的数字,维度数为0,shape

=()。标量的典型用途之一是误差值的表示、各种测量指标的表示,比如准确度(Accuracy)、精度(Precision)和召回率(Recall)等。2向量的应用2向量的应用向量是一种常见的数据载体,如在全连接层和卷积神经网络层中,偏置张量𝒃就使用向量来表示。如图所示,每个全连接层的输出节点都添加了一个偏置值,把所有输出节点的偏置表示成向量形式:𝒃=[𝑏1,𝑏2]𝑇。3矩阵的应用3矩阵的应用矩阵也是非常常见的张量类型,比如全连接层的批量输入𝑋=[𝑏,𝑑𝑖𝑛],其中𝑏表示输入样本的个数,即batchsize,𝑑𝑖𝑛表示输入特征的长度。比如特征长度为4,一共包含2个样本的输入可以表示为矩阵:x=tf.random.normal([2,4])4多维张量的应用4多维张量的应用多维张量应用最多的是四维张量,对于含有RGB3个通道的彩色图片,每张图片包含了h行w列像素点,每个点需要3个数值表示RGB通道的颜色强度,因此一张图片的张量的shape可以表示为(h,w,3),故b张图片的张量的shape可表示为[b,h,w,3]。ThankYOU!目录1案例目标01任务环境配置02任务案例实施04任务案例分析02任务03任务1案例目标案例目标掌握tensorflow包的调用方法;掌握使用定义占位符和变量的方法;掌握计算图的定义方法;掌握会话的创建方法;了解损失函数和优化过程。12案例分析2案例分析案例分析:x、y是二维矩阵,x=[[1.0,3.0],[3.2,4]],y=[[6.0,3.0],[5.2,43.]],运算公式x*W+b=y,求W和b的最优值。3环境配置3环境配置Windows10jupyternotebooktensorflow2.04案例实施4案例实施1、导入库开发环境安装的是TensorFlow2.0版本,为了与TensorFlow1.0兼容,需要输入如下代码导入tensorflow包:4案例实施2、定义占位符和变量先给输入数据定义占位符,在训练优化函数的过程中输入数据4案例实施3、定义计算图和损失函数,使用梯度下降法优化4案例实施4、启动会话,并初始化全局变量,并为x,y设置固定的值4案例实施5、通过while循环进行迭代训练,并输出最终求出的W和b的值ThankYOU!目录1案例目标01任务环境配置02任务案例实施04任务案例分析02任务03任务1案例目标案例目标了解简单的一元线性回归的概念和思想方法;掌握深度学习框架TensorFlow创建项目的流程。熟悉绘图软件包matplotlib的使用。掌握随机数据生成方法。12案例分析2案例分析本案例是简单的一元线性回归问题,线性回归是回归算法的一种,表达了监督学习的过程。本案例是使用numpy随机生成一些数据,目标是找到一个与这些数据最吻合的线性函数,并绘制出函数图像。本案例使用TensorFlow框架构造一个简单的线性回归模型,以熟悉TensorFlow框架的线性回归模型构建方法。本案例使用线性函数是y=wx+b的形式,使用numpy生成随机数据,并设置初始化参数,使用梯度下降算法进行训练,得出最终的参数值。3环境配置3环境配置Windows10tensorflow=2.10.0matplotlib=3.6.1numpy=1.23.44案例实施4案例实施1、导入库导入案例要用到的包,有tensorflow、numpy、matplotlib开发环境安装的是TensorFlow2.0版本,导入tensorflow需要与TensorFlow1.0兼容。4案例实施2、生成随机数据生成随机数据,并加入噪声数据,然后打印出散点图:4案例实施3、定义占位符和变量4案例实施4、定义计算图、损失函数、设置优化器4案例实施5、通过while循环进行迭代训练,并输出最终求出的W和b的值4案例实施5、绘制回归曲线ThankYOU!目录1Keras概述01任务Keras特点02任务1Keras概述1Keras概述前面我们介绍过深度学习的相关概念,深度学习是机器学习框架的主要子领域之一,其主要方法核心是人工神经网络。深度学习由Theano、TensorFlow、Caffe、MXNet等各种深度学习框架支持,而Keras是功能强大且易于使用的深度学习框架之一,Keras框架建立在TensorFlow等流行的深度学习框架的基础上,旨在快速定义深度学习模型,使创建深度学习模型更为简单。2Keras特点2Keras特点Keras提供了一种简洁的方法来创建基于TensorFlow或Theano的深度学习模型,并运用了各种优化技术使神经网络API调用变得轻松高效。Keras框架具有以下功能特点:(1)用户友好Keras是专门为用户而设计的API;把用户体验放在首要位置,提供统一且易懂的API,将常见用例所需的用户操作简单化;在用户操作错误时提供清晰的说明和反馈。2Keras特点(2)模块化网络模型是由一系列独立的、完全可配置的模块组成的序列;在keras中,常见的模块有神经网络层、损失函数、优化器、初始化方法、激活函数、正则化方法等;根据所需的功能模块,可以将这些模块以尽可能少的限制组合在一起构建新模型。2Keras特点(3)易扩展性使用keras创建的模型,可以增加或删除模块,以提升模型的性能,新的模块是很容易添加的。由于能够轻松地创建可以提高模型性能的新模块,Keras更加适合高级学术研究。2Keras特点(4)基于Python实现Keras没有特定格式的单独配置文件,模块是用Python代码来定义的,这些代码紧凑,易于调试,并且易于扩展。ThankYOU!目录1Keras体系结构介绍01任务Keras搭建模型的方法02任务1Keras体系结构介绍1Keras体系结构介绍Keras具有很强的创新性,而且非常易于学习,提供了一个完整的框架来支持从简单的神经网络到复杂的神经网络模型等多种类型的神经网络的创建;Keras的体系结构可以分为三个主要类别:模型、层和核心模块;通过调用Keras模型、层和核心模块,可以以简单有效的方式构建如CNN、RNN等神经网络。2Keras搭建模型方法2Keras搭建模型方法Keras提供了序列式(Sequential)、函数式(Functional)和子类(Subclassing)三种定义模型的API,这里我们重点对序列式模型和函数式模型进行介绍。(1)序列式模型序列式模型也称为顺序模型,顺序模型基本上是Keras层的线性组成;顺序模型简单,并且能够表示几乎所有可用的神经网络。2Keras搭建模型方法序列式模型的构建使用Sequential()函数构造器来创建序列式模型,序列式模型有两种写法。以列表的形式为Sequential()函数填充参数:2Keras搭建模型方法另一种写法是使用add()函数,将各网络层添加到模型中:2Keras搭建模型方法(2)函数式模型Keras函数式模型API是用户定义多输出模型、非循环有向模型等复杂模型的有效途径。下面通过使用函数式方法构建一个全连接神经网络模型,帮助我们理解函数式模型创建方法。ThankYOU!目录1Keras核心模块介绍01任务Keras核心模块02任务1Keras核心模块介绍1Keras核心模块介绍Keras提供了许多内置的与神经网络相关的功能模块,用户可以方便地调用模块创建Keras模型和Keras层,常用的核心模块有激活函数、损失函数、优化器和正则化器等。2Keras核心模块2Keras核心模块(1)损失函数损失函数也称为目标函数或优化评分函数,诸如均方误差(mean_squared_error,MSE)、平均绝对误差(MeanAbsoluteError,MAE),泊松(poisson)等损失函数。损失函数是在模型编译的过程中设置的参数,代码如下所示:2Keras核心模块(2)评估指标评估指标用于评估当前训练模型的性能,常见的评估指标有准确率(Accuracy)、精确度(Precision)和召回率(Recall)等,评估指标也是编译模型时的一个重要参数。示例代码如下:2Keras核心模块(3)优化器优化器,即神经网络优化算法,或梯度下降算法。常见的优化器模块有Adam、SGD等。优化器可以通过改善训练方式,最小化损失值,不断优化模型。2Keras核心模块(4)激活函数激活函数是神经网络中的重要概念,激活函数模块提供了许多激活函数类型,例如softmax、relu等。激活函数可以由单独的激活函数层构建,也可以在构造网络层的时候设置激活函数参数,比如可以在添加全连接层的时候设置激活函数参数:2Keras核心模块(5)回调函数回调函数(Keras.callback)模块是一个函数集合,回调函数用在模型训练阶段,可以使用回调函数查看训练模型的状态,在使用fit()或fit_generator()训练模型时,回调函数就是一个用以访问模型的状态与性能的函数,根据模型状态采取中断训练、保存模型等措施。回调函数模块包括许多内置的函数:①keras.callback.ModelCheckPoint:在训练过程中的不同时间点,保存模型的当前权重;②keras.callback.EarlyStopping:如果验证集上的损失不再改善,则中断训练;③keras.callback.ReduceLROnPlateau:如果验证集上的损失不再改善,可以通过该回调函数降低学习率。2Keras核心模块(6)数据集Keras的数据集模块中集成了许多常用的数据集,在做模型训练时,可以直接调用数据集,比如:①CIFAR-10图像分类数据集②CIFAR-100图像分类数据集③IMDB电影评论情感分类数据集④路透社新闻主题分类数据集⑤MNIST手写字符数据集⑥Fashion-MNIST时尚物品数据集⑦Boston房价回归数据集ThankYOU!目录1Keras网络层介绍01任务Keras网络层类型02任务1Keras网络层介绍1Keras网络层介绍Keras模型中的每个层代表神经网络模型中的对应层,Keras提供了许多预构建层,如输入层、隐藏层、输出层、卷积层、池化层等,因此提高了构建复杂神经网络模型的效率。2Keras网络层类型2Keras网络层类型(1)全连接层:神经网络中最常用到的层,全连接层的每一个神经元都与上一层的所有神经元相连,用来把前边提取到的特征综合起来。实现对神经网络里的神经元激活。参数说明:units:全连接层输出的维度,即下一层神经元的个数activation:激活函数,默认使用Reluuse_bias:是否使用bias偏置项2Keras网络层类型(2)激活层:对上一层的输出应用激活函数。参数说明:activation:激活函数的名称,如:relu、tanh、sigmoid等2Keras网络层类型(3)Dropout层:对上一层的神经元随机选取一定比例的失活,不更新参数,但是权重仍然保留,防止模型过拟合。参数说明:

rate:失活的比例,为0-1之间的浮点数。2Keras网络层类型(4)Flatten层:将一个维度大于或等于3的高维矩阵,“压扁”为一个二维矩阵。即保留第一个维度(如:batch的个数),然后将剩下维度的值相乘为“压扁”矩阵的第二个维度。2Keras网络层类型(5)Reshape层:该层的作用和numpy.reshape一样,就是将输入的维度重构成特定的shape。参数说明:

target_shape:目标矩阵的维度,不包含batch样本数。2Keras网络层类型(6)卷积层:卷积操作分为一维、二维、三维,分别为Conv1D、Conv2D、Conv3D。一维卷积主要用于处理时间序列数据或文本数据,二维卷积通常用于处理图像数据。这三类的使用方法和参数基相同,这里我们主要介绍用于处理图像数据的二维卷积。参数说明:filters:滤波器的个数。kernel_size:卷积核的大小。strides:卷积操作的步长,二维中默认为(1,1),一维默认为1。Padding:补“0”策略2Keras网络层类型(7)池化层:与卷积层类似,池化层分为最大池化层和平均池化层,也分为一维池化、二维池化和三维池化三种,由于使用和参数基本相同,所以主要以MaxPooling2D进行说明。参数说明:pool_size:表示池化核大小,池化核大小可以数组或元祖表示。strides:和卷积步长类似,表示池化核的移动步长,默认和pool_size保持一致。padding:和卷积层的padding参数类似。ThankYOU!目录1Keras建模流程介绍01任务Keras建模具体流程02任务1Keras建模流程介绍1Keras建模流程介绍深度学习框架Keras是像搭积木般构建神经网络模型,主要分为6个部分,每个部分只需调用kerasAPI函数就能实现。使用keras框架建模流程通常包括:(1)数据预处理:获取并预处理训练数据;(2)建立模型:定义由网络层组成的网络或模型,将输入数据映射成目标;(3)编译模型:配置训练过程参数,包括损失函数、优化器、模型评估指标;(4)训练模型:调用函数在训练数据上进行迭代,更新模型权重;(5)评估模型:使用测试集或验证数据集,评估模型的性能是否达到要求;(6)模型预测:使用训练好的模型预测新的数据。2Keras建模具体流程2Keras建模具体流程(1)数据预处理在以深度学习为主的人工智能任务流程中,第一步要做的就是数据的处理,因为有了数据,网络模型才能够训练,数据处理的步骤主要有以下几个环节:数据采集数据标注数据增强数据清洗数据标准化数据的划分在本课程的案例中,均使用keras数据集模块加载相应的数据集,然后进行相应的数据处理。2Keras建模具体流程(2)建立模型Keras框架中,有序列式和函数式两种常用的建模方法。比如使用序列式API建模,代码如下:使用model.add()给模型添加了一个Dense层,参数2表示该层神经元的数量;一般层的添加顺序即是各层连接的顺序,也是数据流经模型被处理的顺序。2Keras建模具体流程(3)编译模型定义好模型之后需要通过编译(compile)来对学习过程进行配置,模型编译主要是设置各类参数包括:优化器optimizer,损失函数loss,评估指标metrics等。代码如下:编译的过程也是Keras将定义好的模型转化为底层平台(如TensorFlow)结构描述过程,底层平台会支持后续的计算任务,如GPU、CPU的调度选择,分布式运行等。2Keras建模具体流程(4)训练模型编译后的模型可以使用model.fit()函数进行训练,训练的过程就是通过测试数据来确定神经元间连接权重(weight)的过程。训练过程需要指定训练数据、批量大小、训练代数等参数。代码如下:2Keras建模具体流程(5)评估模型训练后的模型,需要对其性能进行评估,以此来确定训练效果是否达到了预期。评估模型使用的函数是model.evalute(),该函数的参数x_test和y_test与model.fit()方法的数据类型是一样的,一般会选择用测试数据进行评估。2Keras建模具体流程(6)模型预测模型预测是建模的最后一步,当模型的性能评估达到要求后,就可以用训练好的模型在新的数据上进行预测了。预测一般使用测试集或验证集,代码如下:predictions是预测返回的结果,数据格式与输出层的输出格式相同。ThankYOU!目录1案例目标01任务环境配置02任务案例实施04任务案例分析02任务03任务1案例目标案例目标通过一个花朵图像分类案例,掌握深度学习框架keras的建模流程;熟悉数据的加载以及从文件中生成数据集的方法;掌握使用matplotlib工具绘制训练曲线的方法,初步了解模型过拟合的概念。12案例分析2案例分析本案例使用keras框架实现对5种花朵图像进行分类;本案例使用keras的Sequential方法创建模型;本案例使用preprocessing.image_dataset_from_directory从图像文件中加载数据并生成数据集;本案例从指定网址中下载花朵图像数据,数据包含约3700张5类花朵图像。3环境配置3环境配置Windows10tensorflow=2.10.0matplotlib=3.6.1numpy=1.23.44案例实施4案例实施部分代码展示:1、导入库导入本案例要使用的库:4案例实施2、下载数据集并展示图像从指定的网址中下载图像文件:4案例实施计算图像的数量,并展示图像示例:4案例实施3、将图像加载到tf.data.dataset中4案例实施4、搭建模型4案例实施5、编译训并练模型编译模型:训练模型:4案例实施6、绘制训练曲线ThankYOU!认识生物神经网络01任务认识人工神经网络02任务目录11认识生物神经网络1认识生物神经网络概念:生物神经网络(BiologicalNeuralNetworks)一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动;神经元是人类大脑的一个组成单元,人脑神经系统约有860亿个神经元组成,每个神经元有上千个突触与其他神经元相连接;神经元的状态取决于从其他神经元接收的输入信号量,当信号量总和超过了阈值,细胞体被激活,产生电脉冲;神经元的状态(兴奋或抑制)通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论