这是一个很好的做法 finalize() 在进入迭代优化过程之前的一种图,特别是用来发现在优化过程中添加操作的错误,从而避免出现内存不足的错误。
finalize()
然而,当一个图完成时,很难以交互方式检查或调试代码,因为只有一个句柄是已经定义好的——而且您最好将它们保存在一个python变量中,或者给它们一个好的名称,因为浏览一个大图的所有操作默认名称可能会很痛苦。
那么,有没有更好的方法,特别是一个图表可以“未完成”?
图确实可以使用protected方法未完成 _unsafe_unfinalize() ,例如
_unsafe_unfinalize()
tf.get_current_graph()._unsafe_unfinalize()
正如这个方法的文档(和名称)所说,
取消图形的定版可能会对性能产生负面影响, 尤其是在多线程环境中。取消图形的终结 当会话使用它时,可能会导致未定义的行为。确保 调用此方法之前,使用图的所有会话都将关闭。
尽管有这个警告,我发现 _unsafe_finalize() 有用的,特别是在训练出错的情况下,不管怎样都会被杀死的。
_unsafe_finalize()