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