TensorFlow学习 -2

来源:互联网 发布:b2b数据采购平台 编辑:程序博客网 时间:2024/06/05 17:41
  • 会话(TensorFlow运行模型)
    会话拥有并管理TensorFlow程序运行时的所有资源。
    两种使用会话的方式:
    (1)需要调用明确调用会话生成函数和关闭会话函数
#创建一个会话sess = tf.Session()sess.run(...)#关闭会话是的本次运行中使用到的资源得到释放。sess.close()

(2)通过Python的上下文管理器来使用会话

#创建一个会话,并通过Python中的上下文管理器来管理会话with tf.Session() as sess:    sess.run()#不需要在调用Session.close()函数来关闭会话#当上下文退出时关闭和资源释放也就自动完成了

TensorFlow不会自动生成默认的会话,需要手动指定。当默认的会话被指定之后可以通过tf.Tensor.eval函数计算一个张量的取值。

sess = tf.Session()with sess.as_default():    print(result.eval())

以下代码也可以完成相同的功能:

sess = tf.Session()#下面的两个命令有相同的功能print(sess.run(result))print(result.eval(session=sess))

通过设置默认会话的方式来获得张量的取值更为方便,即tf.InteractiveSession函数。使用这个函数会自动生成的会话注册为默认会话。

sess = tf.InteractiveSession()print(result.eval())sess.close()

无论使用哪种方法都可以通过ConfigProto Protocol Buffer来配置需要生成的会话。

config = tf.ConfigProto(allow_soft_placement=True,                        log_device_placement=True)sess1 = tf.InteractiveSession(config=config)sess2 = tf.Session(config=config)

通过ConfigProto可以配置并行的线程数、CPU分配策略、运算超时时间等参数。
其中,allow_soft_placement,当一下任意一个条件成立后,GPU上的运算可以放大CPU进行:
1,运算无法在GPU上执行。
2,没有GPU资源。
3,运算输入包含对CPU计算结果的引用。
参数默认值为False。
第二个参数为log_device_placement。当其为True时日志中将会记录每个节点被安排在哪个设备上用以方便调试。

原创粉丝点击