您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > TensorFlow原理介绍图文
TensorFlowanopensourcesoftwarelibraryformachinelearning目录▪机器学习–机器学习是什么–机器学习的领域–机器学习方法–主流机器学习框架▪TensorFlow–TensorFlow是什么–TensorFlow架构–TensorFlow基本使用–TensorFlow机器学习例子---一元线性回归–TensorFlowforAndroidDemo机器学习是什么?▪定义计算机利用已有的数据(经验),得出了某种模型(规律),并利用此模型预测未来数据特征的一种方法。机器学习的方法▪监督式学习算法–从带标签(标注)的训练样本中建立一个模式(模型),并依此模式推测新的数据标签的算法▪无监督式学习算法–在学习时并不知道其分类结果,其目的是去对原始资料进行分类,以便了解资料内部结构的算法▪半监督式学习算法–利用少量标注样本和大量未标注样本进行机器学习,利用数据分布上的模型假设,建立学习器对未标签样本进行标签*上述只是其中一种机器学习算法的分类方式机器学习的领域范围领域模式识别机器学习数据挖掘机器学习+数据库统计学习统计+机器学习计算机视觉图像处理+机器学习语音识别语音处理+机器学习自然语言处理文本处理+机器学习主流机器学习框架库名发布者支持语言支持系统TensorFlowGooglePython/C++/Java/GoLinux/MacOS/Android/iOSCaffeUCBerkeleyPython/C++/MatlabLinux/MacOS/WindowsCNTKMicrosoftPython/C++/BrainScriptLinux/WindowsMXNetDMLC(分布式机器学习社区)Python/C++/Matlab/Julia/Go/R/ScalaLinux/MacOS/Windows/Android/iOSTorchFacebookC/Lua/Linux/MacOS/Windows/Android/iOSTheano蒙特利尔大学PythonLinux/MacOS/WindowsNeonIntelPythonLinux主流机器学习框架库名学习材料丰富程度CNN建模能力RNN建模能力易用程度运行速度多GPU支持程度TensorFlow★★★★★★★★★★★★★★★Caffe★★★★★★★CNTK★★★★★★★★★★★MXNet★★★★★★★★★★★★Torch★★★★★★★★★★★★★Theano★★★★★★★★★★★Neon★★★★★★★★★主流机器学习框架TensorFlow是什么?▪TensorFlow™是一个采用计算图的形式表述数值计算的编程系统,本身是一个开源软件库。TensorFlow计算图中每一个节点表示一次数学计算,每一条边表示计算之间的依赖关系。▪张量(tensor)是计算图的基本数据结构,可以理解为多维数据,流(Flow)表达了张量之间通过计算互相转化的过程。▪它灵活的架构可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。▪TensorFlow最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。TensorFlow是什么?▪张量(Tensor)是一个物理量,对高维(维数≥2)的物理量进行“量纲分析”的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量…▪计算图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算的图像。“节点”一般用来表示施加的数学操作,但也可以表示数据输入(feedin)的起点/输出(pushout)的终点,或者是读取/写入持久变量(persistentvariable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)TensorFlow架构TensorFlow的系统结构以CAPI为界,将整个系统分为「前端」和「后端」两个子系统前端系统(FrontEnd)•提供多语言编程环境,提供统一的编程模型支撑用户构造计算图•通过Session的形式,连接TensorFlow后端的「运行时」,启动计算图的执行过程后端系统(ExecSystem)•提供运行时环境,负责执行计算图TensorFlow基本使用▪使用tensor表示数据▪通过变量(Variable)输入训练数据,维护状态▪使用计算图(computationalgraph)来表示计算任务▪在会话(Session)的上下文(context)中执行计算图TensorFlow基本使用---Tensor▪Tensor是TensorFlow中的核心单元,TensorFlow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor.你可以把TensorFlowtensor看作是一个n维的数组或列表,如同矩阵一样▪导入tensorflow▪使用Tensorimporttensorflowastfnode1=tf.constant(3.0,tf.float32)node2=tf.constant([1.0,2.0])#alsotf.float32implicitlynode3=tf.constant([[1,2],[3,4],[5,6]],name=node3)printnode1,'\n',node2,'\n',node3Tensor(Const:0,shape=(),dtype=float32)Tensor(Const_1:0,shape=(2,),dtype=float32)Tensor(”node3:0,shape=(3,2),dtype=int32)TensorFlow基本使用---计算图▪计算图是用图中节点呈现一系列操作的图表。包括:1.构建计算图2.运行计算图构建简单的计算图,每个节点将零个或多个tensor作为输入,产生一个tensor作为输出。一个典型的节点为常量,他将被tensorflow内部存储起来:importtensorflowastfinput1=tf.constant([1.0,2.0,3.0],name=x_const)input2=tf.Variable([3.0,4.0,5.0],name=y_var)output=tf.add(input1,input2,name=add_op)printinput1,'\n',input2,'\n',outputTensor(x_const:0,shape=(3,),dtype=float32)tf.Variable'y_var:0'shape=(3,)dtype=float32_refTensor(add_op:0,shape=(3,),dtype=float32)TensorFlow基本使用---计算图▪计算图是用图中节点呈现一系列操作的图表。包括:1.构建计算图2.运行计算图构建的计算图必须在tensorflow的session中才能运行:#-*-coding:utf-8-*-importtensorflowastfinput1=tf.constant([1.0,2.0,3.0],name=“x_const”)#常量input2=tf.Variable([3.0,4.0,5.0],name=“y_var)#变量必须有初值output=tf.add(input1,input2,name=add_op)sess=tf.Session()#运行计算图之前创建session#调用sess的‘run()'方法来执行矩阵乘法op,feed用来传入变量数据result=sess.run(output,feed_dict={input2:[6.0,6.0,6.0]})#返回值'result'是一个numpy`ndarray`对象.printresult:,result,,type:,type(result)#任务完成,关闭会话.sess.close()result:[7.8.9.],type:type'numpy.ndarray'TensorFlow机器学习例子---一元线性回归▪回归分析–确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。▪一元线性回归1.只涉及一个自变量和一个应变量2.应变量与自变量呈线性关系3.应变量与自变量的关系可以用一个线性方程表示𝑦=𝜔𝒙+𝑏TensorFlow机器学习例子---一元线性回归▪最小二乘对于第𝑖个应变量值𝑥𝑖,估计值𝑦𝑖=𝜔𝑥𝑖+𝑏对于每一个𝑥𝑖,估计值𝑦𝑖与实际值𝑦𝑖距离的平方和𝑄=(𝑦𝑖−𝑦𝑖)2=(𝑦𝑖−𝜔𝑥𝑖−𝑏)2要达到最小,则对𝜔和𝑏求偏导数,Q的极小值点在偏导数为0的时候取得▪梯度下降算法利用计算机求极值,可以用梯度下降算法进行多次迭代,逼近极值点,求出𝜔和𝑏TensorFlow机器学习例子---一元线性回归▪100个散点样本,求出回归方程▪构建计算图TensorFlow机器学习例子---一元线性回归▪100个散点样本,求出回归方程▪运行计算图TensorFlow机器学习例子---一元线性回归▪100个散点样本,求出回归方程▪TensorBoard查看计算图TensorFlowforAndroidDemo▪功能:离线识别照片中的物体,给出百分比表示的确认程度TensorFlowforAndroidDemo▪Android上的TF核心库是C++写的,用Bazel编译而成▪TensorFlow提供了JavaAPI给Androidapp调用▪Demoapp利用预先训练好的识别模型进行离线识别▪预先训练的模型包括protocalbuffer形式的模型和对应的物体标签外部依赖作用libandroid_tensorflow_inference_java.jarTensorFlowJavaAPIlibtensorflow_inference.soTensorFlow模型运行和推断实现tensorflow_inception_graph.pb预先训练好的模型imagenet_comp_graph_label_strings.txt模型中对应的识别物体的名称TensorFlowforAndroidDemoThanks
本文标题:TensorFlow原理介绍图文
链接地址:https://www.777doc.com/doc-5169305 .html