什么是TensorFlow会话?

简介: 我已经看到了很多人对 TensorFlow 的 tf.Graph 和 tf.Session 的规则感到困惑。其实很简单:• Graph(图形)定义了计算。但它不计算任何东西,也不包含任何值,它只是定义您在代码中指定的操作。• Session(会话)允许执行图形或部分图形。它为此分配资源(在一台或多台机器上)并保存中间结果和变量的实际值。

我已经看到了很多人对 TensorFlow 的 tf.Graph 和 tf.Session 的规则感到困惑。其实很简单:

  • Graph(图形)定义了计算。但它不计算任何东西,也不包含任何值,它只是定义您在代码中指定的操作。
  • Session(会话)允许执行图形或部分图形。它为此分配资源(在一台或多台机器上)并保存中间结果和变量的实际值。


我们来看一个例子。


定义 Graph(图形)


我们使用一个变量三个操作定义一个 Graph(图形):variable 返回变量的当前值。initialize 将初始值42分配给该变量。assign 将新值13赋给该变量。

graph = tf.Graph()
with graph.as_default():
  variable = tf.Variable(42, name='foo')
  initialize = tf.global_variables_initializer()
  assign = variable.assign(13)


旁注:TensorFlow 为您创建一个默认图形,因此我们不需要上面代码的前两行。 如果你不手动指定Graph(图形)时, 默认的 Graph(图形)也是下面例子中的 Session(会话)使用的缺省值。


在 Session(会话)中运行计算


要运行三个定义的操作中的任何一个,我们需要为该 Graph(图形)创建一个Session(会话)。会话还将分配内存来存储变量的当前值。

with tf.Session(graph=graph) as sess:
  sess.run(initialize)
  sess.run(assign)
  print(sess.run(variable))
# Output: 13

如您所见,我们的变量值仅在一个会话中有效。如果我们尝试在第二个会话中查询该值,TensorFlow 将引发错误,因为该变量未在那里初始化。

with tf.Session(graph=graph) as sess:
  print(sess.run(variable))
# Error: Attempting to use uninitialized value foo

当然,我们可以在多个会话中使用该图,我们只需要再次初始化变量。新会话中的值将完全独立于第一个:

with tf.Session(graph=graph) as sess:
  sess.run(initialize)
  print(sess.run(variable))
# Output: 42

希望这个简短的工作可以帮助您更好地理解 tf.Session。随意在评论中提问。

更新(时间2017-07-12):在 TensorFlow 1.0中初始化变量的操作已更改。

您可以在开放的CC BY-SA 3.0 许可下使用此帖子, 并将其引用为:

@misc {hafner2016tfsession,
  作者= {Hafner,Danijar},
  title = {什么是TensorFlow会话?},
  年= {2016},
  howpublished = {博客文章},
  url = {https://danijar.com/what-is-a-tensorflow-session/}
}
相关文章
|
9月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow核心组件详解:张量、图与会话
【4月更文挑战第17天】TensorFlow的核心是张量、计算图和会话。张量是基本数据单元,表示任意维度数组;计算图描述操作及它们的依赖关系,优化运行效率;会话是执行计算图的环境,负责操作执行和资源管理。在TF 2.x中,Eager Execution模式简化了代码,无需显式创建会话。理解这些组件有助于高效开发深度学习模型。
|
TensorFlow 算法框架/工具
Python-Tensorflow基础(一)-创建图,创建会话
Python-Tensorflow基础(一)-创建图,创建会话
144 0
Python-Tensorflow基础(一)-创建图,创建会话
|
TensorFlow 算法框架/工具
Tensorflow |(4)名称域、图 和会话
Tensorflow |(4)名称域、图 和会话
108 0
Tensorflow |(4)名称域、图 和会话
|
2月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
311 55
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
242 5
|
3月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
124 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
3月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
161 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
3月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
145 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
135 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
125 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型