1. 程式人生 > >解決tensorflow報錯ValueError: Variable conv1/weights already exists, disallowed.

解決tensorflow報錯ValueError: Variable conv1/weights already exists, disallowed.

早上在跑別人的tensorflow程式碼時報錯:

Traceback (most recent call last):

  File "<ipython-input-23-712e8e1f026f>", line 1, in <module>
    runfile('C:/Users/peter/Downloads/tensorflow-mnist-cnn-master/mnist_cnn_train.py', wdir='C:/Users/peter/Downloads/tensorflow-mnist-cnn-master')

  File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py"
, line 705, in runfile execfile(filename, namespace) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/peter/Downloads/tensorflow-mnist-cnn-master/mnist_cnn_train.py"
, line 167, in <module> train() File "C:/Users/peter/Downloads/tensorflow-mnist-cnn-master/mnist_cnn_train.py", line 46, in train y = cnn_model.CNN(x) File "C:\Users\peter\Downloads\tensorflow-mnist-cnn-master\cnn_model.py", line 22, in CNN net = slim.conv2d(x, 32, [5, 5], scope='conv1'
) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\arg_scope.py", line 183, in func_with_args return func(*args, **current_args) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\layers\python\layers\layers.py", line 1154, in convolution2d conv_dims=2) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\arg_scope.py", line 183, in func_with_args return func(*args, **current_args) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\layers\python\layers\layers.py", line 1057, in convolution outputs = layer.apply(inputs) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 805, in apply return self.__call__(inputs, *args, **kwargs) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\layers\base.py", line 362, in __call__ outputs = super(Layer, self).__call__(inputs, *args, **kwargs) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 728, in __call__ self.build(input_shapes) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\layers\convolutional.py", line 161, in build dtype=self.dtype) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\layers\base.py", line 276, in add_weight getter=vs.get_variable) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 565, in add_weight aggregation=aggregation) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\training\checkpointable\base.py", line 535, in _add_variable_with_custom_getter **kwargs_for_getter) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\ops\variable_scope.py", line 1467, in get_variable aggregation=aggregation) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\ops\variable_scope.py", line 1217, in get_variable aggregation=aggregation) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\ops\variable_scope.py", line 510, in get_variable return custom_getter(**custom_getter_kwargs) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\layers\python\layers\layers.py", line 1744, in layer_variable_getter return _model_variable_getter(getter, *args, **kwargs) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\layers\python\layers\layers.py", line 1735, in _model_variable_getter use_resource=use_resource) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\arg_scope.py", line 183, in func_with_args return func(*args, **current_args) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\variables.py", line 297, in model_variable use_resource=use_resource) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\arg_scope.py", line 183, in func_with_args return func(*args, **current_args) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\variables.py", line 252, in variable use_resource=use_resource) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\ops\variable_scope.py", line 481, in _true_getter aggregation=aggregation) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\ops\variable_scope.py", line 848, in _get_single_variable name, "".join(traceback.format_list(tb)))) ValueError: Variable conv1/weights already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at: File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1717, in __init__ self._traceback = tf_stack.extract_stack() File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 3155, in create_op op_def=op_def) File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\util\deprecation.py", line 454, in new_func return func(*args, **kwargs)

我發現這是第一次跑,為什麼會有模型重載入的問題。
然後我發現這是因為我在Spyder的Python控制檯裡跑的原因,Python的控制檯會儲存上次執行結束的變數。

解決方法1:重開一個控制檯即可

解決方法2:在程式碼的開頭加上一句

tf.reset_default_graph()

參考資料:
ValueError: Variable rnn/basic_rnn_cell/kernel already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope?

Error in notebook: “ValueError: Variable conv1/weights already exists, disallowed. Did you mean to set reuse=True in VarScope”