gpt4 book ai didi

python - 创建两个 TensorFlow session 时是否会创建图的多个实例?

转载 作者:行者123 更新时间:2023-12-01 07:45:53 24 4
gpt4 key购买 nike

背景

我正在通过演练 Hands-On Machine Learning with Scikit-Learn and TensorFlow 的第二部分来学习 TensorFlow ,练习问题之一是(粗体文字是我自己添加的内容,以提高问题的清晰度):

“如果您创建一个包含变量 w 的图形 g,则启动两个线程并在每个线程中打开一个 session ,两者都使用相同的图形g,每个 session 都会有自己的变量 w 副本还是会共享?”

书后提供的答案如下:

“在本地 TensorFlow 中, session 管理变量值,因此如果您创建一个包含变量 w 的图 g,则启动两个线程并在每个线程中打开一个本地 session ,都使用相同的图g,那么每个 session 都会有自己的变量w副本...”

我的问题

A)B) 是对正在发生的事情的正确解释吗?

A)。两个 session 都使用图 g 的相同实例,并且两个单独的变量仅归因于两个单独的 session 。

B) 通过实例化两个不同的 session ,两个线程使用图 g 的相同架构,但是创建了图 g 的两个单独的实例,从而产生两个不同的变量。

最佳答案

我认为这里的问题是术语“实例化”的模糊性,以及图表和 session 的实际含义。

如果您有一个图表和两个打开的 session ,则该图表只有一个实例。这是一个 Python 对象,描述模型执行的计算,即张量之间的运算,可能包括一些常量值和变量。如果您向该图表添加新元素(新操作),则两个 session 都可以访问该元素。重要的是要理解图是静态的,也就是说,它们没有状态,并且它们本身不计算任何东西,它们只是描述如何执行计算。它可以被认为是计算机程序源代码的模拟。

session 是一个存储图状态的对象,可以对其执行计算。最重要的是,这个“状态”包含图中变量的值。因此,变量对象本身是图的一部分(从这个意义上说,跨 session “共享”),但它在任何时候具有的值都存储在每个打开的 session 中。不过,变量值并不是 session 中存储的唯一内容。您还可以了解随机数生成器或数据集迭代器的状态等信息。请参阅What is a “stateful object” in tensorflow? 。按照之前的类比, session 就像是执行一个程序所使用的内存和 CPU,而该程序的源代码就是该图。

尝试更具体地回答您的问题,如果我正确理解您的意思,我认为正确的解释是A)

关于python - 创建两个 TensorFlow session 时是否会创建图的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com