运行tensorflow a second tim时出错

2024-10-01 22:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着运行下面的tensorflow代码,它第一次运行良好。如果我再次运行它,它会不断抛出一个错误

ValueError: Variable layer1/weights1 already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at:

      File "C:\Users\owner\Anaconda3\envs\DeepLearning_NoGPU\lib\site-packages\tensorflow\python\framework\ops.py", line 1228, in __init__
        self._traceback = _extract_stack()
      File "C:\Users\owner\Anaconda3\envs\DeepLearning_NoGPU\lib\site-packages\tensorflow\python\framework\ops.py", line 2336, in create_op
        original_op=self._default_original_op, op_def=op_def)
      File "C:\Users\owner\Anaconda3\envs\DeepLearning_NoGPU\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 768, in apply_op
        op_def=op_def)

如果我重新启动控制台,然后运行它,它再次运行良好。在

下面是我实现的神经网络。在

^{pr2}$

如错误所示,我尝试在with tf.variable_scope():中添加reuse=True作为参数,但这同样不起作用。在

我在conda环境下运行这个。我在Windows10中使用的是Python3.5和CUDA8(但这并不重要,因为它没有配置为在GPU中运行)。在


Tags: inlibpackagestensorflowdefsiteframeworkusers
1条回答
网友
1楼 · 发布于 2024-10-01 22:38:44

这是一个TF如何工作的问题。需要理解的是,TF有一个“隐藏”状态——一个正在构建的图。大多数tf函数都在这个图中创建操作(就像tf.变量调用,每个算术运算等等)。另一方面,实际的“执行”发生在tf.会议(). 因此,您的代码通常如下所示:

build_graph()

with tf.Session() as sess:
  process_something()

由于所有实际变量、结果等都只在会话中保留,如果您想“运行两次”就可以了

^{pr2}$

请注意,我正在构建graph一次。图形是事物外观的抽象表示,它不包含任何计算状态。当你试着

build_graph()

with tf.Session() as sess:
  process_something()

build_graph()

with tf.Session() as sess:
  process_something()

在第二次构建时,可能会出现错误,原因是试图创建具有相同名称的变量(在您的情况下会发生什么)、正在完成图形等。如果您确实需要以这种方式运行,则只需在中间重置graph

build_graph()

with tf.Session() as sess:
  process_something()

tf.reset_default_graph()

build_graph()

with tf.Session() as sess:
  process_something()

会很好的。在

相关问题 更多 >

    热门问题