专栏首页GAN&CVtensorflow:提示找不到Adam或者RMSProp变量,Did you mean to set reuse=None in VarScope?

tensorflow:提示找不到Adam或者RMSProp变量,Did you mean to set reuse=None in VarScope?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/77856961

错误的完整信息

Variable discriminator/conv/weights/RMSProp/does not exist, or was not created with tf.get_variable(). Did you mean to set reuse=None in VarScope?

这个错误是在使用优化函数

tf.train.RMSPropOptimizer()


tf.train.AdamOptimizer()

引起的,使用梯度下降算法反而没有出现问题, 并且使用了 tf.get_variable_scope().reuse_variables() 原因是使用Adam或者RMSProp优化函数时,Adam函数会创建一个Adam变量,目的是保存你使用tensorflow创建的graph中的每个可训练参数的动量,但是这个Adam是在reuse=True条件下创建的,之后reuse就回不到None或者False上去,当reuse=True,就会在你当前的scope中reuse变量,如果在此scope中进行优化操作,就是使用AdamOptimizer等,他就会重用slot variable,这样子会导致找不到Adam变量,进而报错。

设置reuse=True的地方是

tf.get_variable_scope().reuse_variables()

或者

With tf.variable_scope(name) as scope :
       Scope.reuse_variables()

一般在运行GAN程序的时候会用到这段代码。解决方法就是将这个scope独立出来,reuse=True就只在当前scope中起作用,使用

With tf.variable_scope(tf.get_variables_scope())

把它放在需要调用函数的地方,我这里是discriminator函数: 代码更改如下所示: Wrong:

       G = generator(z)
       D, D_logits = discriminator(images)
       samples = sampler(z)
       D_, D_logits_ = discriminator(G, reuse=True)

True:

   with tf.variable_scope("for_reuse_scope"):
       G = generator(z)
       D, D_logits = discriminator(images)
       samples = sampler(z)
       D_, D_logits_ = discriminator(G, reuse=True)

我看有的人说在使用优化函数的上面加with。。。这句话,但是我试用了并没有用。 类似这样:

   with tf.variable_scope(tf.get_variable_scope(), reuse=None):#新增
       d_optim = tf.train.RMSPropOptimizer(LR).minimize(d_loss,var_list=d_vars, global_step=global_step)
       g_optim = tf.train.RMSPropOptimizer(LR).minimize(g_loss,var_list=g_vars, global_step=global_step)

另外,出现此问题的原因也可能是在该复用网络参数的时候没有复用,复用时要设置reuse= True

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL中GROUP BY用法示例

    GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

    Awesome_Tang
  • 一张图理清《梅花易数》梗概

    学《易经》的目的不一定是为了卜卦,但是了解卜卦绝对能够让你更好地了解易学。今天用一张思维导图对《梅花易数》的主要内容进行概括,希望能够给学友们提供帮助。

    一石匠人
  • 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

    从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

    haifeiWu
  • 儿童创造力教育与编程教育的碰撞——MIT雷斯尼克教授最新理论梗概

    儿童编程教育已经在我国各一线二线城市疯狂出现,颇有“烂大街”的趋势。我们不禁要问很多很多问题:

    一石匠人
  • 天干地支五行八卦的对应关系

    一石匠人
  • 【系统设置】CentOS 修改机器名

    ken.io
  • 声音功能让儿童编程更有创造性

    导读:Scratch中声音功能非常强大,除了常规的音效,你甚至可以模拟各种乐器的各个发音、设置节拍、休止……如果你愿意,甚至可以用它创作一个交响乐。我们可以引导...

    一石匠人
  • 《动物魔法学校》儿童学编程Scratch之“外观”部分

    导读:本文通过一个案例《动物魔法学校》来学习Scratch语言的“外观”部分。之后通过一系列其他功能的综合运用对作品功能进行了扩展。

    一石匠人
  • 什么样的人生才是有意义的人生——没有标准的标准答案

    【导读】其实我们可以跳出这个小圈圈去更加科客观地看一下这个世界。在夜晚的时候我们仰望天空,浩瀚的宇宙中整个地球只是一粒浮尘,何况地球上一个小小的人类?在漫长的历...

    一石匠人
  • 我不是算命先生,却对占卜有了疑惑——如何论证“占卜前提”的正确与否

    事出有因,我对《周易》感兴趣了很多年。只是觉得特别有趣,断断续续学习了一些皮毛。这几天又偶然接触到了《梅花易数》,觉得很是精彩,将五行八卦天干地支都串联了起来。...

    一石匠人

扫码关注云+社区

领取腾讯云代金券