为什么我需要“as\u default()”在Tensorflow图中编写指令?

2024-06-28 19:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么我不能直接使用g1,g2而不将其设为默认值?你知道吗

为什么我必须使用with g1.as_default() as g:

g1 = tf.Graph()
g2 = tf.Graph()
with g1.as_default() as g:
  with g.name_scope( "g1" ) as g1_scope:
    matrix1 = tf.constant([[3., 3.]])
    matrix2 = tf.constant([[2.],[2.]])
    product = tf.matmul( matrix1, matrix2, name = "product")

Tags: namedefaulttfaswithproductgraphscope
1条回答
网友
1楼 · 发布于 2024-06-28 19:31:09

除非您处于渴望模式,否则每当您创建一个新操作(或多或少是任何tf.*函数)时,都会向TensorFlow计算图中添加一个新节点。如果您没有另外指定,那么该图形将是“默认图形”,默认情况下由TensorFlow为您创建的图形(您可以使用tf.reset_default_graph()更新默认图形)。但是,如果您想让事情更整洁,您可能需要对哪个操作进入哪个图形进行一些控制。为此,您可以创建自己的图形并使用as_default()上下文。这将使给定的图形成为默认图形,因此现在每个新操作都将添加到该图形中,而不是全局默认图形。通常,这是指定要将每个操作放置在何处的唯一方法。例如,这允许您在不同的图中保留不同的模型,这可能使保存和恢复更容易,或者只是保持隔离(注意每个会话属于一个图,因此一个图中的计算不可能影响不同的图)。你知道吗

相关问题 更多 >