首页 > 解决方案 > jupyter中的Tensorflow:变量已经存在

问题描述

以下是“使用 Scikit Learn 和 Tensorflow 进行动手机器学习”示例中的部分神经网络代码,可以按预期工作:

with tf.name_scope("dnn"):
    hidden1 = fully_connected(X, n_hidden1, activation_fn=leaky_relu, scope="hidden1")
    hidden2 = fully_connected(hidden1, n_hidden2, activation_fn=leaky_relu, scope="hidden2")
    logits = fully_connected(hidden3, n_outputs, activation_fn=None, scope="outputs")
with tf.name_scope("loss"):
    xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y,
                                                          logits=logits)
    loss = tf.reduce_mean(xentropy, name="loss")

但是,如果我只是重新运行 Jupyter 单元,我会收到以下错误。这意味着我无法进行更改,例如添加另一个隐藏层。

ValueError: Variable hidden1/weights already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope?

我尝试了 tf.reset_default_graph(),但只有重置整个 Jupyter 笔记本才能解决此问题。这个错误的最佳解决方法是什么,以便我可以对神经网络进行更改?

标签: python-3.xtensorflow

解决方案


您是否尝试过为每一层简单地设置reuse=True?重用:布尔值,是否重用前一层的同名权重。 https://www.tensorflow.org/api_docs/python/tf/layers/dense

对我来说似乎是一个有效的选择。


推荐阅读