我试着运行下面的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中运行)。在
这是一个TF如何工作的问题。需要理解的是,TF有一个“隐藏”状态——一个正在构建的图。大多数tf函数都在这个图中创建操作(就像tf.变量调用,每个算术运算等等)。另一方面,实际的“执行”发生在tf.会议(). 因此,您的代码通常如下所示:
由于所有实际变量、结果等都只在会话中保留,如果您想“运行两次”就可以了
^{pr2}$请注意,我正在构建graph一次。图形是事物外观的抽象表示,它不包含任何计算状态。当你试着
在第二次构建时,可能会出现错误,原因是试图创建具有相同名称的变量(在您的情况下会发生什么)、正在完成图形等。如果您确实需要以这种方式运行,则只需在中间重置graph
会很好的。在
相关问题 更多 >
编程相关推荐