如何实现Tensorflow中的图和会话

  

这篇文章主要讲解了如何实现Tensorflow中的图和会话,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

Tensorflow编程系统

如何实现Tensorflow中的图和会话

Tensorflow工具或者说深度学习本身就是一个连贯紧密的系统。一般的系统是一个自治独立的、能实现复杂功能的整体。系统的主要任务是对输入进行处理,以得到想要的输出结果。我们之前见过的很多系统都是线性的,就像汽车生产工厂的流水线一样,输入->系统处理->输出。系统内部由很多单一的基本部件构成,这些单一部件具有特定的功能,且需要稳定的特性;系统设计者通过特殊的连接方式,让这些简单部件进行连接,以使它们之间可以进行数据交流和信息互换,来达到相互配合而完成具体工作的目的。

对于任何一个系统来说,都应该拥有稳定、独立、能处理特殊任务的单一部件;且拥有一套良好的内部沟通机制,以让系统可以健康安全的运行。

现实中的很多系统都是线性的,被设计好的、不能进行更改的,比如工厂的流水线,这样的系统并不具备自我调整的能力,无法对外界的环境做出反应,因此也就不具备“智能”。

深度学习(神经网络)之所以具备智能,就是因为它具有反馈机制。深度学习具有一套对输出所做的评价函数(损失函数),损失函数在对神经网络做出评价后,会通过某种方式(梯度下降法)更新网络的组成参数,以期望系统得到更好的输出数据。

如何实现Tensorflow中的图和会话

由此可见,神经网络的系统主要由以下几个方面组成:

  • 输入
  • 系统本身(神经网络结构),以及涉及到系统本身构建的问题:如网络构建方式、网络执行方式、变量维护、模型存储和恢复等等问题
  • 损失函数
  • 反馈方式:训练方式

定义好以上的组成部分,我们就可以用流程化的方式将其组合起来,让系统对输入进行学习,调整参数。因为该系统的反馈机制,所以,组成的方式肯定需要循环。

而对于Tensorflow来说,其设计理念肯定离不开神经网络本身。所以,学习Tensorflow之前,对神经网络有一个整体、深刻的理解也是必须的。如下图:Tensorflow的执行示意。

如何实现Tensorflow中的图和会话

那么对于以上所列的几点,什么才是最重要的呢?我想肯定是有关系统本身所涉及到的问题。即如何构建、执行一个神经网络?在Tensorflow中,用计算图来构建网络,用会话来具体执行网络。深入理解了这两点,我想,对于Tensorflow的设计思路,以及运行机制,也就略知一二了。

图(tf.Graph):计算图,主要用于构建网络,本身不进行任何实际的计算。计算图的设计启发是高等数学里面的链式求导法则的图。我们可以将计算图理解为是一个计算模板或者计划书。

会话(tf.会话):会话,主要用于执行网络。所有关于神经网络的计算都在这里进行,它执行的依据是计算图或者计算图的一部分,同时,会话也会负责分配计算资源和变量存放,以及维护执行过程中的变量。

接下来,我们主要从计算图开始,看一看Tensorflow是如何构建,执行网络的。

在开始之前,我们先复习一下Tensorflow的几种基本数据类型:

特遣部队。常数(价值,dtype=,=形状没有,name=& # 39; const # 39;, verify_shape=False)   特遣部队。变量(初始化、名称)   特遣部队。占位符(dtype、形状=None, name=None)

复习完毕。

图=tf.Graph ()
  与graph.as_default ():
  img=tf.constant(1.0,形状=[1、5、5、3)

以上代码中定义了一个计算图,在该计算图中定义了一个常量.Tensorflow默认会创建一张计算图。所以上面代码中的前两行,可以省略。默认情况下,计算图是空的。

如何实现Tensorflow中的图和会话

在执行完img=tf.constant(1.0、形状=[1、5、5、3)以后,计算图中生成了一个节点一个节点结点由名称、op,输入,attrs组成,即结点名称,操作,输入以及一系列的属性(类型,形状,值)等组成,计算图就是由这样一个个的节点组成的。对于tf.constant()函数,只会生成一个节点,但对于有的函数,如特遣部队。变量(初始化、名称)(注意其第一个参数是初始化器)就会生成多结个节点点(后面会讲到)。

如何实现Tensorflow中的图和会话