资源描述
,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Tensorflow,与深度学习,1,第四天,-Tensorflow,基础,1,、深度学习介绍,2,、认识,Tensorflow,3,、,Tensorflow,的安装,4,、,Tensorflow,初体验,5,、,Tensorflow,进阶,6,、案例:实现线性回归,2,3,4,5,A yellow bus driving down a road with green trees and green grass in the background.,Living room with white couch and blue carpeting.The room in the apartment gets some afternoon sun.,这些都是深度学习程序所写,6,7,聊天对话系统,8,深度学习介绍,深度学习,如,深度神经网络、卷积神经网络,和递归神经网络已被应用,计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域,并获取了极好的效果。,9,10,深度学习框架,Tensorflow,11,12,13,认识,Tensorflow,14,15,1,、真正的可移植性,引入各种计算设备的支持包括,CPU/GPU/TPU,,以及能够很好地运行在移动端,,如安卓设备、,ios,、树莓派等等,2,、,多语言支持,Tensorflow,有一个合理的,c+,使用界面,也有一个易用的,python,使用界面来构建和,执行你的,graphs,,你可以直接写,python/c+,程序。,3,、高度的灵活性与效率,TensorFlow,是一个采用数据流图(,data flow graphs,),用于数值计算的开源软件库,能够灵活进行组装图,执行图。随着开发的进展,,Tensorflow,的效率不算在提高,4,、支持,TensorFlow,由谷歌提供支持,谷歌投入了大量精力开发,TensorFlow,,它希望,TensorFlow,成为机器学习研究人员和开发人员的通用语言,Tensorflow,特点,16,17,使用,tensorflow,的公司,18,Tensorflow,教学版本,使用,17,年,2,月份发布的,1.0,版本,更快:,TensorFlow 1.0,运行速度变得更加快,更灵活,TensorFlow 1.0,还加入了一些高级,API,,包括,tf.layers,,,tf.metrics,和,tf.losses,模块。,以及加入了一些类似,scikit-learn,的,estimator,机制,0.12,版本之后支持的可视化,能够可视化的看见程序图的结构,19,Tensorflow,的安装,Linux/ubuntu,Mac,20,开启,GPU,支持,(,不推荐,),如果您的系统没有,NVIDIAGPU,,请构建并安装,CPU,版本,Ubuntu:,安装,CUDA,和,cuDNN,Mac:,安装,CUDA,和,cuDNN,21,Tensorflow,初体验,通过案例来了解分析,Tensorflow,的整个结构,22,加法运算,23,Tensorflow,加法运算,24,数据流图:,25,Tensor,flow,26,计算密集型,vs IO,密集型,Tensorflow,与以往接触的不同,27,Tensorflow,进阶,1,、图,2,、会话,3,、张量,4,、变量,5,、模型保存和加载,6,、自定义命令行参数,28,29,图,图默认已经注册,,一组表示,tf.Operation,计算单位的对象和,tf.Tensor,表示操作之间流动的数据单元的对象,获取调用:,tf.get_default_graph(),op,、,sess,或者,tensor,的,graph,属性,30,哪些是,op,31,图的创建,tf.Graph(),使用新创建的图,g=tf.Graph(),with g.as_default():,a=tf.constant(1.0),assert c.graph is g,32,会话,tf.Session(),运行,TensorFlow,操作图的类,使用默认注册的图(可以指定运行图),会话资源,会话可能拥有很多资源,如,tf.Variable,,,tf.QueueBase,和,tf.ReaderBase,,会话结束后需要进行资源释放,sess=tf.Session(),sess.run(.),sess.close(),使用上下文管理器,with tf.Session()as sess:,sess.run(.),config=tf.ConfigProto(log_device_placement=True),交互式:,tf.InteractiveSession(),33,会话的,run(),方法,run(fetches,feed_dict=None,graph=None),运行,ops,和计算,tensor,嵌套列表,元组,,namedtuple,,,dict,或,OrderedDict(,重载的运算符也能运行,),feed_dict,允许调用者覆盖图中指定张量的值,提供给,placeholder,使用,返回值异常,RuntimeError,:如果它,Session,处于无效状态(例如已关闭)。,TypeError,:如果,fetches,或,feed_dict,键是不合适的类型。,ValueError,:如果,fetches,或,feed_dict,键无效或引用,Tensor,不存在。,34,Tensorflow,Feed,操作,意义:在程序执行的时候,不确定输入的是什么,提前,“占个坑”,语法:,placeholder,提供占位符,,run,时候通过,feed_dict,指定参数,35,张量,1,、张量的阶和数据类型,2,、张量操作,36,关闭警告,import,osos.environ,TF_CPP_MIN_LOG_LEVEL,=,2,37,张量的阶和数据类型,Tensorflow,基本的数据格式,一个类型化的,N,维度数组(,tf.Tensor,),三部分,名字,形状,数据类型,38,张量的阶,39,张量的数据类型,40,张量属性,graph,张量所属的默认图,op,张量的操作名,name,张量的字符串描述,shape,张量形状,41,42,43,张量的动态形状与静态形状,TensorFlow,中,张量具有静态形状和动态形状,静态形状:,创建一个张量或者由操作推导出一个张量时,初始状态的形状,tf.Tensor.get_shape:,获取静态形状,tf.Tensor.set_shape():,更新,Tensor,对象的静态形状,通常用于在不能直接推,断的情况下,动态形状:,一种描述原始张量在执行过程中的一种形状,tf.reshape:,创建一个具有不同动态形状的新张量,44,1,、转换静态形状的时候,,1-D,到,1-D,,,2-D,到,2-D,,不能跨阶数改变形状,2,、,对于已经固定或者设置静态形状的张量变量,不能再次设置静态形状,3,、,tf.reshape(),动态创建新张量时,元素个数不能不匹配,要点,45,张量操作,-,生成张量,46,为什么需要正态分布的变量值?,47,正态分布,概率密度函数为正态分布的期望值,决定了其位置,其标准差,决定了分布的幅度。当,=0,=1,时的正态分布是标准正态分布。,48,张量操作,-,张量变换,49,切片与扩展,tf.concat(values,axis,name=concat),50,https:/www.tensorflow.org/versions/r1.0/api_guides/python/math_ops,提供给,Tensor,运算的数学函数,算术运算符,基本数学函数,矩阵运算,减少维度的运算,(,求均值,),序列运算,51,注:这些都是在,1.0,版本下的函数,不同版本会有些差异,52,变量,1,、变量的创建,2,、变量的初始化,3,、变量的作用域,53,变量,变量也是一种,OP,,是一种特殊的张量,能够进行存储持久化,它的,值就是张量,54,变量的创建,tf.Variable(initial_value=None,name=None,),创建一个带值,initial_value,的新变量,assign(value),为变量分配一个新值,返回新值,eval(session=None),计算并返回此变量的值,name,属性表示变量名字,55,变量的初始化,tf.global_variables_initializer(),添加一个初始化所有变量的,op,在会话中开启,56,57,可视化学习,Tensorboard,数据序列化,-events,文件,TensorBoard,通过读取,TensorFlow,的事件文件来运行,tf.summary.FileWriter(/tmp/tensorflow/summary/test/,graph=,default_graph),返回,filewriter,写入事件文件到指定目录,(,最好用绝对路径,),,以提供给,tensorboard,使用,开启,tensorboard -logdir=/tmp/tensorflow/summary/test/,一般浏览器打开为,127.0.0.1:6006,注:修改程序后,再保存一遍会有新的事件文件,打开默认为最新,58,图中的符号意义,59,增加变量显示,1,、收集变量,tf.summary.scalar(name=,tensor),收集对于损失函数和准确率,等单值变量,name,为变量的名字,,tensor,为值,tf.summary.histogram(name=,tensor),收集高维度的变量参数,tf.summary.image(name=,tensor),收集输入的图片张量能显示图片,2,、合并变量写入事件文件,merged=tf.summary.merge_all(),运行合并:,summary=sess.run(merged),,,每次迭代都需运行,添加:,FileWriter.add_summary(summary,i),i,表示第几次的值,目的:,观察模型的参数、损失值等变量值的变化,60,tensorflow,实现一个简单的线性回归案例,简单的,API,介绍,线性回归实现,61,结果演示,62,动画演示,63,Tensorflow,运算,API,矩阵运算,tf.matmul(x,w),平方,tf.square(error),均值,tf.reduce_mean(error),64,tf.train.GradientDescentOptimizer(learning_rate),梯度下降优化,learning_rate:,学习率,一般为,method:,return:,梯度下降,op,梯度下降,API,65,Tensorboard,观察图结构,变量显示,66,作用域,想一想之前函数里面,一个变量的作用域?,67,tensorflow,变量作用域,tf.variable_scope(),创建指定名字的,变量作用域,观察变量的,name,改变?,嵌套使用变量作用域,观察变量的,name,改变?,68,如果在之前,给变量取相同的,name,会出现什么样的情况?,69,tensorflow,变量作用域的作用,让模型代码更加清晰,作用分明,70,模型保存和加载,tf.train.Saver(var_list=None,max_to_keep=5),var_list:,指定将要保存和还原的,变量,。它可以作为一个,dict,或一个列表传递,.,max_to_keep,:指示要保留的最近检查点文件的最大数量。,创建新文件时,会删除,较旧的文件。如果无或,0,,则保留所有,检查点文件。默认为,5,(即保留最新的,5,个,检查点文件,。),例如:,saver.save(sess,/tmp/ckpt/test/model),saver.restore(sess,/tmp/ckpt/test/model),保存文件格式:,checkpoint,文件,71,自定义命令行参数,1,、,2,、,tf.app.flags.,在,flags,有一个,FLAGS,标志,它在程序中可以调用到我们,前面具体定义的,flag_name,3,、通过,tf.app.run(),启动,main(argv),函数,72,73,Thank you!,74,
展开阅读全文