TensorFlow ValueError,set reuse=True错误

13 篇文章 0 订阅
4 篇文章 0 订阅

(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的图已经更新,不会存在变量名相同的情况了。

重新运行即可

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值