tensorflow报错解决 Variable conv1/conv1_1/weights already exist, or was not created,

首先我还是要喷一下坑了我好久的垃圾文章,在大多数与我标题相关的文章当中,99%的文章只写了一句话,在程序的开头加上tf.reset_default_graph(),而且连具体位置都没写,查过stackoverflow之后,才知道应该加载import tensorflow as tf。

但是问题来了,应该有不少同学跟我一样的情况,加了之后并没有作用,那么进入正题,在我尝试多次之后,终于发现并解决了我程序里的bug,这里写一下,给大家做一个思路上的参考。

我使用slim自己复现了一个cnn模型,在我的训练模型得文件当中,我定义了两个操作,第一个是训练集的训练操作,一个是验证集的训练操作,代码如下(以下是bug解决之后的代码,先放在这里以下两行是正确的的代码!!!!

with tf.variable_scope("VGG_19"):
            pre,soft_max,predictions=VGG_19(inputs=train_images,is_training=True,NUM_CLASSES=NUM_CLASSES)
            tf.get_variable_scope().reuse_variables()
            _,_,val_pre=VGG_19(inputs=val_images,is_training=False,NUM_CLASSES=NUM_CLASSES)

 

这里关注reuse参数,这是我一开始根据报错,加到函数里的,一开始,我在第一个操作里,将reuse设置为True

pre,soft_max,predictions=VGG_19(inputs=train_images,reuse=True,is_training=True,NUM_CLASSES=NUM_CLASSES)

会得到一个valueERROR:Variable conv1/conv1_1/weights does not exist, or was not created,这是因为在这里这个变量还没被创建

 

对于验证操作,reuse为什么要设置成False,大家有时间的或可以去了解一下python的变量共享机制,相当于我用一个网络对两个数据集都执行了操作,假如我不设置这两个操作的参数共享的话(),就会报错 valueError:Variable conv1/conv1_1/weights already exist, or was not created,

_,_,val_pre=VGG_19(inputs=val_images,reuse=True,is_training=False,NUM_CLASSES=NUM_CLASSES)

你可能感兴趣的:(tensorflow报错解决)