人工智能tensorflow实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、软件下载为了更好的达到预期的效果,本次tensorflow开源框架实验在Linux环境下进行,所需的软件及相关下载信息如下:1.CentOS软件介绍:CentOS是一个基于RedHatLinux提供的可自由使用源代码的企业级Linux发行版本。每个版本的CentOS都会获得十年的支持(通过安全更新方式)。新版本的CentOS大约每两年发行一次,而每个版本的CentOS会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的Linux环境。CentOS是CommunityEnterpriseOperatingSystem的缩写。CentOS是RHEL(RedHatEnterpriseLinux)源代码再编译的产物,而且在RHEL的基础上修正了不少已知的Bug,相对于其他Linux发行版,其稳定性值得信赖。软件下载:本次实验所用的CentOS版本为CentOS7,可在CentOS官网上直接下载DVDISO镜像文件。下载链接:软件介绍:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。软件下载:本次实验所用的Tensorflow版本为Tensorflow0.5.0,因为实验是在Linux下进行的,所以须在Tensorflow官网或GitHub上下载Linux版本的。下载链接:软件介绍:Anaconda是一个用于科学计算的Python发行版,支持Linux,Mac,Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。软件下载:本次实验所用的Anaconda版本为Anaconda2-4.2.0,因为实验环境在Linux中进行,所以需在Anaconda官网上下载Linux版本的。下载链接:软件介绍:VMwareWorkstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试、部署新的应用程序的最佳解决方案。VMwareWorkstation可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的IT开发人员和系统管理员而言,VMware在虚拟网路,实时快照,拖曳共享文件夹,支持PXE等方面的特点使它成为必不可少的工具。软件下载:本次实验所用的VMwareWorkstation版本为VMwareWorkstation10.7z,可以在百度搜索的相关网站下载,也可以在VMwareWorkstation官网上下载。下载链接:软件介绍:Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及MicrosoftWindows平台的TELNET协议。Xshell通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。软件下载:本次实验所用的Xshell版本为Xshell5.0.0964,可直接在百度软件中心下载,也可以在Xshell官网上下载(包含中文汉化版的)。下载链接:二、软件安装本次实际桌面操作系统为Windows7,但实验需在Linux环境下进行,所以需要安装一个虚拟机,其软件的安装如下:1.VMwareWorkstation10.7z本次实验的VMwareWorkstation10.7z为一个可执行的exe文件,选择好安装目录,双击便可安装。安装截图如下:成功安装后截图:2.CentOS7本次实验的CentOS7为一个ISO镜像文件,需在VMwareWorkstation10.7z中新建虚拟机来进行安装。由于安装步骤比较繁琐,这里选取主要截图(其具体安装可参考链接):成功安装后截图:运行截图:3.Anaconda2-4.2.0本次实验的Anaconda2-4.2.0为一个sh文件,通过命令bashAnaconda2-4.2.0-Linux-x86_64.sh进行安装。安装截图如下:成功安装后,调用ipython界面:4.Tensorflow本次实验的Tensorflow0.5.0为一个whl文件,可以直接通过命令pipinstalltensorflow-0.5.0-cp27-none-linux_x86_64.whl进行安装。安装截图如下:成功安装截图:5.Xshell本上实验的Xshell5.0.0964为一个可执行的exe文件,选择好安装目录,双击即可进行安装。安装截图如下:成功安装后截图:运行截图:三、算法原理本次实验的inception模型主要运用了CNN卷积神经网络,下面主要就CNN卷积神经网络和inception模型做一个简单的介绍:CNN卷积神经网络:卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(ConvolutionalNeuralNetworks-简称CNN)。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。K.Fukushima在1980年提出的新识别机是卷积神经网络的第一个实现网络。随后,更多的科研工作者对该网络进行了改进。其中,具有代表性的研究成果是Alexander和Taylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。一般地,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。1.ConvolutionLayers卷积层在一个卷积层,上一层的特征maps被一个可学习的卷积核进行卷积,然后通过一个激活函数,就可以得到输出特征map。每一个输出map可能是组合卷积多个输入maps的值:1*jjiijjiMxfxkb这里jM表示选择的输入maps的集合,那么到底选择哪些输入maps呢?有选择一对的或者三个的。但下面我们会讨论如何去自动选择需要组合的特征maps。每一个输出map会给一个额外的偏置b,但是对于一个特定的输出map,卷积每个输入maps的卷积核是不一样的。也就是说,如果输出特征mapj和输出特征mapk都是从输入mapi中卷积求和得到,那么对应的卷积核是不一样的。(1)ComputingtheGradients梯度计算11'(u)TWf(公式1)这里的“◦”表示每个元素相乘。1()TExWEWW(公式2)我们假定每个卷积层都会接一个下采样层+1。对于BP来说,我们知道,要想求得层的每个神经元对应的权值的权值更新,就需要先求层的每一个神经节点的灵敏度δ(也就是权值更新的公式(2))。为了求这个灵敏度我们就需要先对下一层的节点(连接到当前层的感兴趣节点的第+1层的节点)的灵敏度求和(得到1),然后乘以这些连接对应的权值(连接第层感兴趣节点和第+1层节点的权值)W。再乘以当前层的该神经元节点的输入u的激活函数f的导数值(也就是那个灵敏度反向传播的公式(1)的的求解),这样就可以得到当前层每个神经节点对应的灵敏度了。然而,因为下采样的存在,采样层的一个像素(神经元节点)对应的灵敏度δ对应于卷积层(上一层)的输出map的一块像素(采样窗口大小)。因此,层中的一个map的每个节点只与+1层中相应map的一个节点连接。为了有效计算层的灵敏度,我们需要上采样upsample这个下采样downsample层对应的灵敏度map(特征map中每个像素对应一个灵敏度,所以也组成一个map),这样才使得这个灵敏度map大小与卷积层的map大小一致,然后再将层的map的激活值的偏导数与从第+1层的上采样得到的灵敏度map逐元素相乘(也就是公式(1))。在下采样层map的权值都取一个相同值β,而且是一个常数。所以我们只需要将上一个步骤得到的结果乘以一个β就可以完成第层灵敏度δ的计算。我们可以对卷积层中每一个特征mapj重复相同的计算过程。但很明显需要匹配相应的子采样层的map(参考公式(1)):1'1(f(u)up())jjjjup(.)表示一个上采样操作。如果下采样的采样因子是n的话,它简单的将每个像素水平和垂直方向上拷贝n次。这样就可以恢复原来的大小了。实际上,这个函数可以用Kronecker乘积来实现:up(x)x1nn到这里,对于一个给定的map,我们就可以计算得到其灵敏度map了。然后我们就可以通过简单的对层中的灵敏度map中所有节点进行求和快速的计算bias基的梯度了:,()

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功