tensorflow学习--基本概念计算图与会话

文章目录

      • 一、计算图
      • 二、会话Session

一、计算图

  1. 在TensorFlow程序中,系统会自动维护一个默认的图,通过tf.get_default_graph函数可以查看当前的默认的计算图。
  2. TensorFlow 支持通过tf.Graph函数来生成新的计算图,不同计算图上的张量和计算 不 会 共 享 \large {\color{red}{不会共享}}
  3. 在一个计算图中可以通过集合(collection)来管理不同类别的资源。资源可以是张量、变量、或者运行tensorflow所需要的队列资源等,通过tf.add_to_collection函数可以将资源加入一个或者多个集合中,通过tf.get_collection获取一个集合中的相关资源。
集合名称 集合内容 使用场景
tf.GraphKeys.VARIABLES 所有变量 持久化的tensorflow
tf.GraphKeys.TRAINABLE_VARIABLES 可学习的变量 模型训练,模型可视化内容
tf.GraphKeys.SUMMARIES 日志生成的相关变量 计算可视化
tf.GraphKeys.QUEUE_RUNNERS 处理输入的QUEUERUNNER 输入处理
tf.GraphKeys.MOVING_VARIABLES 所有计算了滑动平均的变量 计算变量的滑动平均值
import tensorflow as tf
# 1
a = tf.constant([1.0,2.0],name="a")
a.graph

# 2
g1 = tf.Graph()
with g1.as_default():
    v = tf.get_variable("v",shape = [1], initializer=tf.zeros_initializer())

g2 = tf.Graph()
with g2.as_default():
    v = tf.get_variable("v",shape = [1],initializer=tf.ones_initializer())
    
with tf.Session(graph=g1) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("",reuse=True):
        print(sess.run(tf.get_variable("v")))
        print(v)

with tf.Session(graph=g2) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("",reuse=True):
        print(sess.run(tf.get_variable("v")))
        print(v)
[0.]

[1.]

二、会话Session

张量和计算图定义了如何组织和计算数据,session是用来执行这些运算的。

#创建一个会话,并通过Python 中的上下文管理器来管理这个会话。
with tf. Session() as sess :
#使用创建好的会话来计算关心的结果。
sess. run ( ... )
#不需要再调用“ Session.close ()”函数来关闭会话,
#当上下文退出时会话关闭和资源释放也自动完成了。
  1. 在指定session的情况下可以使用tf.Tensor.eval来获取张量的计算值。
  2. 在交互环境下使用tf.InteractiveSession创建session,可以使获取张量的取值更加的方便。
  3. 通过ConfigProto Protocol Buffer来配置需要生成的会话,可以配置并行的线程数,GPU的分配策略等参数。
c = tf.constant([1.0,2.0],name="c")
d = tf.constant([2.0,1.0],name="d")
result = a + b
config = tf.ConfigProto(allow_soft_placement = True,  # 当无法使用GPU资源进行计算时,将GPU上的计算放在CPU上计算
                       log_device_placement = True)   #True时记录每个节点被安排在那个设备上,生产环境中设为False来减少日志量

with tf.Session(config=config) as sess:
    print(sess.run(result))
    
sess_Inter = tf.InteractiveSession(config=config)
print("InteractiveSession",result.eval())
sess_Inter.close()
[3. 3.]
InteractiveSession [3. 3.]

你可能感兴趣的:(tensorflow,编程工具,python,人工智能,tensorflow,学习)