Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tensorflow中使用Adadelta优化器时出现未初始化值错误_Python_Tensorflow_Deep Learning_Mnist - Fatal编程技术网

Python 在Tensorflow中使用Adadelta优化器时出现未初始化值错误

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

我正在尝试使用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语句之后重新初始化会话变量,但也没用

如何避免这个错误?谢谢

这里的问题是这是一个误导性的名字。它实际上意味着“返回一个初始化所有已创建变量的操作(在默认图中)”。调用
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()