目的是什么:
with tf.Graph().as_default()
Run Code Online (Sandbox Code Playgroud)
我有一些使用上述的tensorflow代码.但是,代码只有一个图形,为什么我们需要这个?
nes*_*uno 54
TL; DR:这是不必要的,但这是一个很好的做法.
由于始终会注册默认图形,因此每个op和变量都会放入默认图形中.但是,该语句创建了一个新图形,并将所有内容(在其范围内声明)放入此图形中.如果图表是唯一的图表,那就没用了.但这是一个很好的做法,因为如果你开始使用许多图表,就会更容易理解操作和变量的位置.由于这个陈述不需要你,所以最好还是写一下.为了确保如果将来重构代码,定义的操作属于您最初选择的图形.
Yar*_*tov 11
当你必须为你创建的每个操作显式指定图形时,这是一个神器.
我没有看到任何令人信服的案例需要多个图表,因此您通常可以避免使用图表隐式并tf.reset_default_graph()在您想要擦除石板时使用
一些陷阱:
sess.graph)的句柄,因此如果您在调用之前创建会话tf.reset_default_graph(),您的会话图将与您的默认图表不同,这意味着您创建的新操作将无法在该sesson中运行当您点击其中一个陷阱时,您可以将特定graph(即,从tf.get_default_graph()另一个线程或中sess.graph)设置为默认图形,如下所示:
self.graph_context = graph.as_default() # save it to some variable that won't get gc'ed
self.graph_context.enforce_nesting = False
self.graph_context.__enter__()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11792 次 |
| 最近记录: |