TensorFlow ValueError,set reuse=True错误

(ps这里说的情况是我之前的代码可以运行,第二次重新运行出错。要是你的代码一直出现这个错误检查变量命,尽可能保持name_scope中的变量名都不相同即可。)

 

最近使用Spyder来做对比实验,发现运行成功之后,有个代码忘记调整了,所以直接ctrl+c终止了程序的运行,把代码修改好。直接运行后又发现出错了,如下所示:

ValueError: Variable rnn/basic_lstm_cell/kernel already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:

百思不得其解,查阅资料得知:

在第一次训练的时候tensorflow在spyder已经构建好了graph,然而ctrl+c虽然终止了程序运行,但是graph仍然没有移除,虽然用了remove all variables 但是任然移除不了原始的graph。我们知道在相同的scope中,要是变量名相同的话就会报错。在此程序中由于graph没有更新,tensorflow误认为加载的程序和原图用了相同的变量名,所以ValueError。

处理方法:

让tensorflow跟新graph,通过以下代码实现

tf.reset_default_graph() #函数用于清除默认图形堆栈并重置全局默认图形

代码可以放在程序定义变量之前,要是报错:

ValueError: Tensor("rnn/Const:0", shape=(1,), dtype=int32) must be from the same graph as Tensor("ExpandDims:0", shape=(1,), dtype=int32).#说明新的graph已经产生

重新注释掉tf.reset_default_graph()代码就行,此时tensorflow的图已经更新,不会存在变量名相同的情况了。

重新运行即可

 

你可能感兴趣的:(tensorflow,python,深度学习)