gpt4 book ai didi

python - 在 tensorflow 中重置图表

转载 作者:行者123 更新时间:2023-11-28 17:14:55 26 4
gpt4 key购买 nike

我有一个巨大全局变量,用于训练和评估但具有不同的形状。现在我尝试在同一个过程中同时运行评估和训练,我偶然发现我无法真正删除 tensorflow 图中定义的变量。建议的解决方法例如 here是使用 reset_default_graph() 但这似乎与图形上下文管理器无关。

import numpy as np
import tensorflow as tf

GRAPH = tf.Graph()

def train(examples):
with GRAPH.as_default() as g:
# actually this is huge variable
global_var = tf.get_variable('global_var',
initializer=np.full((examples, 32), 0.0),
trainable=False)

def evaluate(examples):
# tf.reset_default_graph() # ValueError: Variable input_var already exists
with GRAPH.as_default() as g: # initialized to some other size
tf.reset_default_graph()
global_var = tf.get_variable('global_var',
initializer=np.full((examples, 32), 0.0),
trainable=False)
# in fact tensorflow creates a new graph and does not use GRAPH to define global_var

train(32)
evaluate(8)

结果:

Traceback (most recent call last):
File "C:/Users/MrD/.PyCharm2017.1/config/scratches/scratch_44.py", line 22, in <module>
evaluate(8)
File "C:/Users/MrD/.PyCharm2017.1/config/scratches/scratch_44.py", line 19, in evaluate
trainable=False)
File "C:\_\Python35\lib\contextlib.py", line 66, in __exit__
next(self.gen)
File "C:\_\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 3616, in get_controller
if self.stack[-1] is not default:
IndexError: list index out of range

那么使用 reset_default_graph() 的正确方法是什么?真的没有办法重新定义一个 Variable 来丢弃旧的可能巨大的初始值设定项吗?

最佳答案

事实证明,在图上下文管理器中“重置默认图”没有意义 - 请参阅:https://github.com/tensorflow/tensorflow/issues/11121 .较新的版本应该添加更有用的错误消息:

AssertionError: Do not use tf.reset_default_graph() to clear nested graphs. If you need a cleared graph, exit the nesting and create a new graph.

如上期所述并实现 here

关于python - 在 tensorflow 中重置图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com