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

一、计算图

  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
<tensorflow.python.framework.ops.Graph at 0x7f5c61da6f98>
# 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.]
<tf.Variable 'v:0' shape=(1,) dtype=float32_ref>
[1.]
<tf.Variable 'v:0' shape=(1,) dtype=float32_ref>

二、会话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.]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值