Python 在Tensorflow中使用Adadelta优化器时出现未初始化值错误
我正在尝试使用Adagrad优化器构建CNN,但出现以下错误 tensorflow.python.framework.errors.FailedPremissionError:尝试使用未初始化的值变量\u 7/Adadelta [[Node:Adadelta/update\u Variable\u 7/ApplyAdadelta=ApplyAdadelta[T=DT\u FLOAT,\u class=[“lock:@Variable\u 7”]、use\u lock=false、\u device=“/job:localhost/replica:0/task:0/cpu:0”](变量\u 7、变量\u 7/Adadelta\u 1、Adadelta/lr、Adadelta/rho、Adadelta/epsilon、gradients/add\u 3\u/tuple/control)] 操作u'Adadelta/update_Variable_7/ApplyAdadelta', 优化器=tf.train.AdadeltaOptimizer(学习率)。最小化(交叉熵) 我试着在本文提到的adagrad语句之后重新初始化会话变量,但也没用 如何避免这个错误?谢谢 这里的问题是这是一个误导性的名字。它实际上意味着“返回一个初始化所有已创建变量的操作(在默认图中)”。调用Python 在Tensorflow中使用Adadelta优化器时出现未初始化值错误,python,tensorflow,deep-learning,mnist,Python,Tensorflow,Deep Learning,Mnist,我正在尝试使用Adagrad优化器构建CNN,但出现以下错误 tensorflow.python.framework.errors.FailedPremissionError:尝试使用未初始化的值变量\u 7/Adadelta [[Node:Adadelta/update\u Variable\u 7/ApplyAdadelta=ApplyAdadelta[T=DT\u FLOAT,\u class=[“lock:@Variable\u 7”]、use\u lock=false、\u devic
tf.train.AdadeltaOptimizer(…).minimize()
时,TensorFlow会创建额外的变量,而您之前创建的init
op没有包含这些变量
移动线路:
init = tf.initialize_all_variables()
在之后,tf.train.AdadeltaOptimizer
的构造应该会使您的程序工作
N.B.您的程序在每个训练步骤上重建整个网络,除了变量之外。这可能是非常低效的,并且Adadelta算法不会像预期的那样进行调整,因为它的状态会在每一步上重新创建。我强烈建议将代码从
batch_xs
的定义移动到optimizer
for的两个嵌套循环之外的创建。您应该为batch_xs
和batch_ys
输入定义tf.placeholder()
ops,并使用feed_dict
参数sess.run()
来传递mnist.train返回的值。下一个batch()
首先,我真的认为模型应该不在循环中。在“b_fc2=偏差变量([10])行后,放置h_*、交叉熵、优化器、精度等。
init = tf.initialize_all_variables()