(二)TensorFlow计算模型-----计算图

来源:互联网 发布:苹果手机设置2g网络 编辑:程序博客网 时间:2024/05/22 06:21

    Tensorflow中所有计算都会被转化为计算图上的节点。

    【概念】Tensor(张量,数据结构,可被理解为多维数组) + Flow(流,计算模型,表达了张量之间通过计算相互转化的过程)

    TensorFlow中每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间 的依赖关系(如果一个运算 的输入依赖于另一个运算的输出,则为依赖关系)。

    【使用】TensorFlow正常可以分为两个阶段。第一阶段:定义计算图中所有的计算;第二阶段:执行计算。

      Tensorflow程序中,可通过tf.get_default_graph函数获取当前默认的计算图。

                                                 tf.Graph函数生成新的计算图。

                                                 tf.Graph.device函数来指定运行计算的设备。如:

                                                 g  = tf.Graph() #指定计算运行的设备

                                                 with g.device('/gpu:0'):

                                                         result = a+ b

       【张量】是tensorflow管理数据的形式。零阶张量表示标量,也就是一个数,第一阶张量为向量,第n阶张量可以理解为一个n维数组。张量保存的是如何得到数字的计算过程。与Numpy中的数组不同,其计算结果不是一个具体数字,而是一个张量的结构。一个张量主要保存三个属性:名字(name)、维度(shape)和类型(type)。

        将一个加数指定成实数类型:a = tf.constant([1,2],name = "a",dtype = tf.float32)

        【张量的使用】主要两大类:1、中间计算结果的引用,提高阅读性;2、计算图构造完之后,张量可以用来获取计算结果,也就是真实的数字。

        【会话】拥有并管理TensorFLow程序运行的所有资源。所有计算完成后需要关闭会话来帮助系统回收资源,否则可能泄露。

         1、#创建一个会话

              sess = tf.Session()

             #使用创建好的会话得到关心的运算结果。比如可以调用

             sess.run(result)

            #关闭会话使得资源释放

            sess.close()

         2、上述模式在计算完后需要调用sess.close()函数来关闭会话并释放资源。如果因异常退出时,最后一句可能不会被执行而导致资源泄露,为了解决此问题,可以通过python的上下文管理器来使用会话。

           with tf.Session() as sess:

          #使用这这创建好的会话来计算关心得结果

          sess.run(...)

不需要调用最后一句关闭会话,上下文退出时会话关闭,资源自动释放。只需将所有计算放在with内部即可。

        



       读后笔记《TensorFlow+实战Google深度学习框架》