当前图表中可用的节点数量在每次迭代时都会增加.由于会话关闭,这似乎不直观,并且应该释放所有资源.即使在创建新会话时,之前节点仍然存在延迟的原因是什么?这是我的代码:
for i in range(3):
var = tf.Variable(0)
sess = tf.Session(config=tf.ConfigProto())
with sess.as_default():
tf.global_variables_initializer().run()
print(len(sess.graph._nodes_by_name.keys()))
sess.close()
Run Code Online (Sandbox Code Playgroud)
它输出:
5
10
15
Run Code Online (Sandbox Code Playgroud)
Mad*_*bat 17
关闭会话不会按设计重置图形.如果你想重置图表,你可以tf.reset_default_graph()像这样打电话
for _ in range(3):
tf.reset_default_graph()
var = tf.Variable(0)
with tf.Session() as session:
session.run(tf.global_variables_initializer())
print(len(session.graph._nodes_by_name.keys()))
Run Code Online (Sandbox Code Playgroud)
或者你可以做这样的事情
for _ in range(3):
with tf.Graph().as_default() as graph:
var = tf.Variable(0)
with tf.Session() as session:
session.run(tf.global_variables_initializer())
print(len(graph._nodes_by_name.keys()))
Run Code Online (Sandbox Code Playgroud)
小智 2
在 Spyder 中运行 TensorFlow 程序时,我遇到了会话关闭问题。RNN 单元似乎仍然存在,并且寻求创建同名的新单元似乎会引起问题。这可能是因为从 Spyder 运行时,即使程序已从 Spyder 中完成“运行”,基于 C 的 TensorFlow 会话也无法正确关闭。Spyder 必须重新启动才能获得新会话。从 Spyder 中运行时,在单元格上设置“reuse=True”可以解决此问题。然而,在训练 RNN 单元时,这似乎不是迭代编程的有效模式。在这种情况下,可能会发生一些意想不到的结果/行为,而观察者不知道发生了什么。
| 归档时间: |
|
| 查看次数: |
17688 次 |
| 最近记录: |