Python机器学习编程与实践 课件 2-2 Tensorflow基础_第1页
Python机器学习编程与实践 课件 2-2 Tensorflow基础_第2页
Python机器学习编程与实践 课件 2-2 Tensorflow基础_第3页
Python机器学习编程与实践 课件 2-2 Tensorflow基础_第4页
Python机器学习编程与实践 课件 2-2 Tensorflow基础_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

TensorFlow编程基础Amachinelearning

platformfor

everyonetosolvereal

problemsTensorFlow™

是一个开放源代码软件库,用于进行高性能数值计算借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)TensorFlow™

最初是由

Google

Brain

团队(隶属于

Google

AI部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持TensorFlow3输出前面的’b’

表示Bytes

literals(字节文字)TensorFlow的Hello

World4TensorFlow计算模型

计算图TensorFlow=Tensor+

FlowTensor张量数据结构:多维数组Flow流计算模型:张量之间通过计算而转换的过程TensorFlow是一个通过计算图的形式表述计算的编程系统每一个计算都是计算图上的一个节点节点之间的边描述了计算之间的关系TensorFlow的概念78计算图(数据流图)的概念计算图是一个有向图,由以下内容构成:一组节点,每个节点都代表一个操作,是一种运算一组有向边,每条边代表节点之间的关系(数据传递和控制依赖)TensorFlow有两种边:常规边(实线):代表数据依赖关系。一个节点的运算输出成为另一个节点的输入,两个节点之间有tensor流动(值传递)特殊边(虚线):不携带值,表示两个节点之间的控制相关性。比如,happens-before关系,源节点必须在目的节点执行前完成执行9计算图的实例输出的结果不是一个具体的数字,而是一个张量的结构计算图的执行创建计算图只是建立静态计算模型执行对话才能提供数据并获得结果10Tensor

张量在TensorFlow中,所有的数据都通过张量的形式来表示从功能的角度,张量可以简单理解为多维数组零阶张量表示标量(scalar),也就是一个数;一阶张量为向量(vector),也就是一维数组;n阶张量可以理解为一个n维数组;张量并没有真正保存数字,它保存的是计算过程张量的概念11张量的属性12Tensor("Add:0",shape=(),

dtype=float32)名字(name)“node:src_output”:node

节点名称,src_output来自节点的第几个输出形状(shape)张量的维度信息,

shape=()

,表示是标量类型(type)每一个张量会有一个唯一的类型TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错张量的形状13三个术语描述张量的维度:阶(rank)、形状(shape)

、维数(dimensionnumber)阶形状维数例子0()0-D41(D0)1-D[2,3,5]2(D0,D1)2-D[[2,3],[3,4]]3(D0,D1,D2)3-D[[[7],[3]],[[2],[4]]]N(D0,D1,…,Dn-1)n-D形为(D0,D1,…,Dn-1)的张量张量的形状14张量的形状15张量的阶16张量的阶(rank)表征了张量的维度阶数学实体代码示例0ScalarScalar=10001VectorVector=

[2,8,3]2MatrixMatrix=

[[4,2,1],[5,3,2],[5,5,6]]33-tensorTensor=

[[[4],[3],[2]],[[6],[100],[4]],[[5],[1],[4]]]nN-tensor…获取张量的元素阶为1的张量等价于向量;阶为2的张量等价于矩阵,通过t[i,j]

获取元素;阶为3的张量,通过t[i,j,k]

获取元素;例:下标从

0开始17张量的类型18TensorFlow支持14种不同的类型实数tf.float32,

tf.float64整数8,16,32,64,

tf.uint8布尔

tf.bool复数plex64,

plex128默认类型:不带小数点的数会被默认为int32带小数点的会被默认为float32张量的类型TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错运行报错:ValueError:Tensorconversionrequesteddtypeint32forTensorwith

dtypefloat32:'Tensor("b_3:0",shape=(2,),

dtype=float32)'19Operation

操作操作计算图中的节点就是操作(Operation)一次加法是一个操作一次乘法也是一个操作构建一些变量的初始值也是一个操作每个运算操作都有属性,它在构建图的时候需要确定下来操作可以和计算设备绑定,指定操作在某个设备上执行操作之间存在顺序关系,这些操作之间的依赖就是“边”如果操作A的输入是操作B执行的结果,那么这个操作A就依赖于操作B21计算图中的操作Session

会话25会话(session)会话拥有并管理TensorFlow程序运行时的所有资源当所有计算完成之后需要关闭会话帮助系统回收资源TensorFlow运行模型

会话26会话的模式

1需要明确调用

Session.close()函数来关闭会话并释放资源当程序因为异常退出时,关闭会话函数可能就不会被执行从而导致资源泄漏会话的模式

1try…except…

finally…会话的模式

229TensorFlow不会自动生成默认的会话,需要手动指定当默认的会话被指定之后可以通过

tf.Tensor.eval

函数来计算一个张量的取值指定默认的会话右边代码也可以完成相同的功能在交互式环境下,Python脚本或者Jupyter编辑器下,通过设置默认会话来获取张量的取值更加方便tf.InteractiveSession

使用这个函数会自动将生成的会话注册为默认会话交互式环境下设置默认会话30常量与变量在运行过程中值不会改变的单元,在TensorFlow中无须进行初始化操作创建语句:constant_name=

tf.constant(value)常量

constant32在运行过程中值会改变的单元,在TensorFlow中须进行初始化操作创建语句:name_variable=tf.Variable(value,

name)注意V是大写字母个别变量初始化:init_op=

name_variable.initializer()所有变量初始化:init_op=

tf.global_variables_initializer()33变量

Variable变量

Variable增加了一个init初始化变量,并调用会话的run命令对参数进行初始化34变量

Variable使用了Variable变量类型,不进行初始化数值会出现运行错误35变量的赋值变量赋值与传统编程语言不同,TensorFlow中的变量定义后,一般无需人工赋值,系统会根据算法模型,训练优化过程中自动调整变量对应的数值后面在将机器学习模型训练时会更能体会,比如权重Weight变量w,经过多次迭代,会自动调特殊情况需要人工更新的,可用变量赋值语句变量更新语句:update_op=tf.assign(variable_to_be_updated,

new_value)epoch=

tf.Variable(0,name='epoch',trainable=False)变量赋值案例38思考题39如何通过TensorFlow的变量赋值计算:1+2+3+…+10

?占位符

placeholder占位符

placeholder41TensorFlow中的Variable变量类型,在定义时需要初始化,但有些变量定义时并不知道其数值,只有当真正开始运行程序时,才由外部输入,比如训练数据,这时候需要用到占位符tf.placeholder占位符,是TensorFlow中特有的一种数据结构,类似动态变量,函数的参数、或者C语言或者Python语言中格式化输出时的“%”占位符占位符

placeholderTensorFlow占位符Placeholder,先定义一种数据,其参数为数据的Type和Shape占位符Placeholder的函数接口如下:tf.placeholder(dtype,shape=None,

name=None)42Feed提交数据和Fetch提取数据Feed提交数据如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量必须通过feed_dict参数传递进去,否则报错Feed提交数据多个操作可以通过一次Feed完成执行Feed和Fetch一次返回多个值分别赋给多个变量46TensorBoard

可视化初步TensorBoard:TensorFlow的可视化工具48TensorBoard计算图可视化度量可视化50TensorBoard是TensorFlow的可视化工具通过TensorFlow程序运行过程中输出的日志文件可视化TensorFlow程序的运行状态TensorBoard和TensorFlow程序跑在不同的进程中TensorBoard案例:在TensorBoard中查看图结构•案例:在TensorBoard中查看图结构运行后在指定目录产生了日志文件TensorBoard不需要额外安装,在TensorFlow安装时已自动完成在Anaconda

Prompt中先进入日志存放的目录(非常重要!!!)再运行TensorBoard,并将日志的地址指向程序日志输出的地址命令:tensorboard

--logdir=/path/log启动TensorBoard启动服务的端口默认为6006;使用

--port

参数可以改编启动服务的端口访问TensorBoard在浏览器访问网址:http://localhost:6006TensorBoard常用APIAPI描述tf.summary.FileWrite()创建FileWriter和事件文件,会在logdir中创建一个新的事件文件tf.summary.FileWriter.add_summary()将摘要添加到事件文件tf.summary.FileWriter.add_event()向事件文件添加一个事件tf.summary.FileWriter.add_graph()向事件文件添加一个图tf.summary.FileWriter.get_logdir()获取事件文件的路径tf.summary.FileWriter.flush()将所有事件都写入磁盘tf.summary.FileWriter.close()将事件写入磁盘,并关闭文件操作符tf.summary.scalar()输出包含单个标量值的摘要tf.summary.histogram()输出包含直方图的摘要tf.summary.audio()输出包含音频的摘要tf.summary.image()输出包含图片的摘要tf.summary.merge()合并摘要,包含所有输入摘要的值TensorBoard应用进阶61TensorBoard输入的样本图像加入summary62TensorBoard定义好前向计算操作后就可以加入summary63TensorBoard定义好loss_function操作后就可以加入summary64TensorBoard定义好accuracy操作后就可以加入summary65TensorBoard准备开始训练,合并所以summary,写入计算图66TensorBoard训练中,生成每次要写入的summary信息,加入summary67Session.run(merged_summary_op)tf.summary.scalar(…)tf.summary.image(…)tf.summary.audio(…)tf.summary.histogram(…)Session.get_default_graph()或session.graphtf.summary.merge_all()tf.summary.FileWrite.add_summary(summary_str)tf.summary.FileWrite(logdir,session.graph)Events文件merged_summary_opsummary_strsession.graph68TensorBoard进入日志所在目录,启动tensorboard,本例采用相对目录TensorFlow游乐场75TensorFlow游乐场是一个通过网页浏览器就可以训练的简单神经网络并实现了可视化训练过程网址:TensorFlow游乐场76P

温馨提示

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

评论

0/150

提交评论