Tensorflow:使用Adam优化器
python
tensorflow
7
0

我正在尝试使用张量流中的一些简单模型,包括一个看起来与第一个MNIST for ML Beginners示例非常相似的模型 ,但是具有更大的维度。我能够毫无问题地使用梯度下降优化器,获得足够好的收敛性。当我尝试使用ADAM优化器时,出现如下错误:

tensorflow.python.framework.errors.FailedPreconditionError: Attempting to use uninitialized value Variable_21/Adam
     [[Node: Adam_2/update_Variable_21/ApplyAdam = ApplyAdam[T=DT_FLOAT, use_locking=false, _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_21, Variable_21/Adam, Variable_21/Adam_1, beta1_power_2, beta2_power_2, Adam_2/learning_rate, Adam_2/beta1, Adam_2/beta2, Adam_2/epsilon, gradients_11/add_10_grad/tuple/control_dependency_1)]]

抱怨未初始化的特定变量根据运行而变化。这个错误是什么意思?这说明什么是错误的?无论我使用什么学习率,它似乎都会发生。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

FailedPreconditionError:尝试使用未初始化的值是与张量流相关的最常见错误之一。根据官方文档FailedPreconditionError

当运行一个在初始化之前读取tf.Variable的操作时,通常会引发此异常。

在您的情况下,该错误甚至说明了未初始化的变量: Attempting to use uninitialized value Variable_1 。 TF教程之一解释了很多有关变量的知识,包括变量的创建/初始化/保存/加载。

基本上,初始化变量有3个选项:

我几乎总是使用第一种方法。请记住,您应该将其放入会话运行中。因此,您将获得如下内容:

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

如果您对有关变量的更多信息感到好奇,请阅读此文档以了解如何report_uninitialized_variables并检查is_variable_initialized

收藏
评论

AdamOptimizer类创建其他变量,称为“插槽”,以保存“ m”和“ v”累加器的值。

如果您好奇,请参阅此处的源代码,它实际上是可读性很强的: https : //github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/adam.py#L39 。其他优化器,例如Momentum和Adagrad也使用插槽。

必须先初始化这些变量,然后才能训练模型。

初始化变量的通常方法是调用tf.initialize_all_variables() ,该函数会添加ops来初始化被调用时存在于图中的变量。

(除了:顾名思义,initialize_all_variables()不会初始化任何内容,它仅添加将在运行时初始化变量的操作。)

您必须做的是添加优化器之后调用initialize_all_variables():

...build your model...
# Add the optimizer
train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# Add the ops to initialize variables.  These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
  sess.run(train_op)
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题