zoukankan      html  css  js  c++  java
  • TensorFlow计算模型—计算图

      TensorFlow是一个通过计算图的形式来表述计算的编程系统。其中的Tnesor,代表它的数据结构,而Flow代表它的计算模型。TensorFlow中的每一个计算都是计算图上的一个节点,而节点之间的线描述了计算之间的依赖关系。

      在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_gragh函数可以获取当前默认的计算图。

    除了默认的计算图,TensorFlow也支持通过tf.Graph函数来生成新的计算图。不同的计算图上的张量和运算不会共享。如下示例:

    #coding:utf-8
    import tensorflow as tf
    
    g1 = tf.Graph()
    with g1.as_default():
        #在计算图g1中定义一个变量v,并且设置初始值为0
        v = tf.get_variable(name="v",initializer=tf.zeros_initializer( )(shape=[1]))
    
    g2 = tf.Graph()
    with g2.as_default():
        # 在计算图g2中定义一个变量v,并且设置初始值为0
        v = tf.get_variable(name="v", initializer=tf.ones_initializer( )(shape=[1]))
    
    with tf.Session(graph=g1) as sess:
        # 运行初始化的两种方法
        init = tf.global_variables_initializer()
        sess.run(init)

       #这个方法已经过时
    #tf.initialize_all_variables().run() #这句话是什么意思? with tf.variable_scope("",reuse=True): #通过名字获取变量 print(sess.run(tf.get_variable("v"))) with tf.Session(graph=g2) as sess: # 运行初始化的两种方法 init = tf.global_variables_initializer() sess.run(init) #tf.initialize_all_variables().run() #这句话是什么意思? with tf.variable_scope("",reuse=True): #通过名字获取变量 print(sess.run(tf.get_variable("v")))

      上面的代码产生了两个计算图,每个计算图中定义了一个名字为“v”的变量。在计算图g1中,将v初始化为0;在计算图g2中,将v初始化为1.由此可见,当运行不同的计算图时,变量v的值也不一样。

      Tensorflow中的计算图不仅仅可以用来隔离张量和运算,还可以提供管理张量和运算的机制。

      计算图可以通过tf.Graph.device()函数来指定运行的设备。这是因为tensorflow使用了GPU机制。一下代码演示指派GPU的操作。

    import tensorflow as tf
    a = tf.constant([1,2])
    b = tf.constant([3,4])
    g = tf.Graph()
    with g.device('/gpu:0'):
        c = tf.add(a, b, "add")
    with tf.Session() as sess:
        print(sess.run(c))

      在一个计算图中,可以通过集合(collection)来管理不同类别的资源。比如通过tf.add_to_collection()函数将资源加入一个或多个集合中。然后通过tf.get_collection获取集合中的所有资源。这里的资源可以是张量、变量或者运行Tensorflow程序所需要的队列资源等等。

                      TensorFlow中维护的集合列表

    集合名称集合内容使用场景
    tf.GraphKeys.VARIABLES 所有变量 持久化TensorFlow模型
    tf.GraphKeys.TRAINABLE_VARIABLES 可学习的变量(一般指神经网络中的参数) 模型训练、生成模型可视化内容
    tf.GraphKeys.SUMMARIES 日志生成相关的张量 TensorFlow计算可视化
    tf.GraphKeys.QUEUE_RUNNERS 处理输入的QueueRunner 输入处理
    tf.GraphKeys.MOVING_AVERAGE_VARIABLES 所有计算了滑动平均值的变量 计算变量的滑动平均值

  • 相关阅读:
    Java学习笔记-函数
    Java学习笔记-数组
    Git 常用命令速查表
    $.fn与$.fx什么意思; $.extend与$.fn.extend用法区别; $(function(){})和(function(){})(jQuery)
    offsetWidth的bug
    jQuery对象和DOM对象转换,解决jQuery对象不能使用js方法的问题
    1
    $().ready()与window.onload的不同
    offsetHeight在不同的浏览器下取值不同
    getElementsByName兼容ie 但并不是兼容ie下的所有标签
  • 原文地址:https://www.cnblogs.com/houjun/p/8824269.html
Copyright © 2011-2022 走看看