使用with-as-clause

时间:2018-01-04 09:57:52

标签: python tensorflow machine-learning graph

因为你能够做到

with tf.Session() as sess:
    #  Run stuff here with sess.run()

但也

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
sess.run(x)

我想知道是否可以使用Graph创建类似的东西,例如:

a_graph = tf.Graph()
x = tf.placeholder(dtype=tf.float32, name='test')
a_graph.add(x)

向图表添加节点/操作的传统方法当然是......

with a_graph.as_default():
    x = tf.placeholder(dtype=tf.float32, name='test')

我在文档中无法阅读有关此内容的任何内容.. dir(a_graph)并未向我显示简单的.add()方法。我唯一能想到的是为集合添加一些操作......但我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

始终可以手动进入/退出上下文管理器:

# Enter the `graph` context
cm = graph.as_default()
cm.__enter__()

print(tf.get_default_graph() == graph)  # True

# All nodes are added to the `graph` now
x = tf.placeholder(dtype=tf.float32, name='x')
y = tf.placeholder(dtype=tf.float32, name='y')

# Exit the context
cm.__exit__(None, None, None)

但是with声明版本对我来说看起来更好。