前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习(三)--session对话和operation操作

深度学习(三)--session对话和operation操作

作者头像
Python进击者
发布2019-09-17 15:21:39
6330
发布2019-09-17 15:21:39
举报
文章被收录于专栏:JAVAandPython君

Session对话

一、session的第一种模式:

代码语言:javascript
复制
import tensorflow as tf

# 定义一个计算图
tens1 = tf.constant([1, 2, 3])

# 创建一个会话
sess = tf.Session()

# 我们通过使用这个对话来实现计算图的计算
print(sess.run(tens1))

# 最后要关闭这个对话
sess.close()
需要明确调用 session.close()来关闭会话并且释放资源,当程序因为异常退出时,关闭会话函数可能就不会被执行从而导致资源的泄漏

升级一下代码:

代码语言:javascript
复制
import tensorflow as tf

# 定义一个计算图
tens1 = tf.constant([1, 2, 3])

# 创建一个会话
sess = tf.Session()

try:
    # 我们通过使用这个对话来实现计算图的计算
    print(sess.run(tens1))
except:
    print("发生异常")
finally:
    # 最后要关闭这个对话
    sess.close()

二、Session的第二种模式

代码语言:javascript
复制
import tensorflow as tf

# 一个简单的计算图
node1 = tf.constant(3.0, tf.float32, name="node1")
node2 = tf.constant(4.0, tf.float32, name="node1")
result = tf.add(node1, node2)

# 创建一个会话,并通过python的上下文管理器来管理这个会话
with tf.Session() as sess:
    print(sess.run(result))

# 此时不需要调用sess.close()函数来结束会话
# 会话会随着上下文管理器的的关闭而自动释放

我们第二种模式是通过python的上下文管理器来创建管理这个会话session,此时是不需要手写来关闭这个session,因为它会随着上下文管理器的关闭而自动结束并且自动释放资源。

三、指定默认会话

代码语言:javascript
复制
import tensorflow as tf

# 一个简单的计算图
node1 = tf.constant(3.0, tf.float32, name="node1")
node2 = tf.constant(4.0, tf.float32, name="node1")
result = tf.add(node1, node2)

sess = tf.Session()

# 指定默认会话
with sess.as_default():
    print(result.eval())
sess = tf.Session()


# 这样也是可以直接进行计算的
print(result.eval(session=sess))
tensorflow不会生成默认的会话,需要手动指定,当默认的会话指定之后,可通过eval()函数来计算一个张量的取值

四、交互式环境下设置默认会话

  • 在交互式环境下,python脚本和jupter编辑器下,通过设置默认会话来获取张量的取值更加方便
  • 使用 tf.InteractiveSession() 会自动将生成的会话注册为默认会话
代码语言:javascript
复制
import tensorflow as tf

# 一个简单的计算图
node1 = tf.constant(3.0, tf.float32, name="node1")
node2 = tf.constant(4.0, tf.float32, name="node1")
result = tf.add(node1, node2)

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

operation操作

这里给大家总结一下啥是操作,总的来说也就这几点啦:

• 计算图中的节点就是操作(Operation)

• 一次加法是一个操作,一次乘法也是一个操作

• 构建一些变量的初始值也是一个操作

• 每个运算操作都有属性,它在构建图的时候需要确定下来

• 操作可以和计算设备绑定,指定操作在某个设备上执行

• 操作之间存在顺序关系,这些操作之间的依赖就是“边”

• 如果操作A的输入是操作B执行的结果,那么这个操作A就依赖于操作B

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需要明确调用 session.close()来关闭会话并且释放资源,当程序因为异常退出时,关闭会话函数可能就不会被执行从而导致资源的泄漏
  • tensorflow不会生成默认的会话,需要手动指定,当默认的会话指定之后,可通过eval()函数来计算一个张量的取值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档