算法工程师修仙之路:TensorFlow(一)

TensorFlow 入门

TensorFlow 计算模型一一计算图


计算图的概念

  • 计算图是 TensorFlow 中最基本的一个概念, TensorFlow 中的所有计算都会被转化为计算图上的节点 。

  • Tensor 就是张量,在 TensorFlow 中,张量可以被简单地理解为多维数组。

  • Flow 就是“流”,它直观地表达了张量之间通过计算相互转化的过程。

  • TensorFlow 是一个通过计算图的形式来表述计算的编程系统,TensorFlow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。

  • 如果一个运算的输入依赖于另 一个运算的输出,那么这两个运算有依赖关系。

计算图的使用

  • TensorFlow 程序一般可以分为两个阶段。在第一个阶段需要定义计算图中所有的计算,第二个阶段为执行计算。

    # 在Python中一般会采用“ impot tensorflow as tf”的形式来载入TensorFlow,
    # 这样可以使用“tf”来代替“tensorflow”作为模块名称,使得整个程序更加简洁。
    
    import tensorflow as tf 
    a = tf.constant([1.0, 2.0], name = "a")
    b = tf.constant([2.0, 3.0], name = "b")
    result = a + b
    
  • 在这个过程中,TensorFlow 会自动将定义的计算转化为计算图上的节点 。在 TensorFlow 程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph 函数可以获取当前默认的计算图

    # 通过a.graph可以查看张量所属的计算圈。
    # 因为没有特意指定,所以这个计算图应该等于当前默认的计算圈。
    # 所以下面这个操作输出值为True。
    print(a.graph is tf.get_default_graph())
    
  • 除了使用默认的计算图,TensorFlow 支持通过 tf.Graph 函数来生成新的计算图,不同计算图上的张量和运算都不会共享。

    # 如何在不同计算图上定义和使用变量。
    g1 = tf.Graph()
    with g1.as_default():
        # 在计算图gl中定义变量“v”,并设置初始值为0。
        # 注意tf.zeros_initializer后面需要跟一个(),否则会报错,这是新版python的特性。
        v = tf.get_variable("v", initializer=tf.zeros_initializer()(shape=[1])) 
    
    g2 = tf.Graph()
    with g2.as_default():
        # 在计算图gl中定义变量“v”,并设置初始值为1。
        # 注意tf.ones_initializer后面需要跟一个(),否则会报错,这是新版python的特性。
        v = tf.get_variable("v", initializer=tf.ones_initializer()(shape=[1]))
    
    # 在计算图gl中读取变量“v”的取值。
    with tf.Session(graph=g1) as sess:
        tf.global_variables_initializer().run()
        with tf.variable_scope("", reuse=True):
            # 在计算图gl中,变量“v”的取值应该为0,所以下面这行会输出[0.]。
            print(sess.run(tf.get_variable("v")))
    
    # 在计算图g2中读取变量“v”的取值。
    with tf.Session(graph=g2) as sess:
        tf.global_variables_initializer().run()
        with tf.variable_scope("", reuse=True):
            # 在计算图g2中,变量“v”的取值应该为1,所以下面这行会输出[1.]。
            print(sess.run(tf.get_variable("v"))) 
    
  • TensorFlow 中的计算图不仅仅可以用来隔离张量和计算,它还提供了管理张量和计算的机制。计算图可以通过 tf.Graph.device 函数来指定运行计算的设备,这为 TensorFlow 使用 GPU 提供了机制。

  • 在一个计算图中,可以通过集合(collection)来管理不同类别的资源。

    • 比如通过 tf.add_to_collection 函数可以将资源加入一个或多个集合中,然后通过tf.get_collection 获取一个集合里面的所有资源。
    • 这里的资源可以是张量、变量或者运行TensorFlow 程序所需要的队列资源等等。
  • TensorFlow中维护的集合列表
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/85725944