运行亚当优化器

Posted

技术标签:

【中文标题】运行亚当优化器【英文标题】:Running Adam Optimizer 【发布时间】:2018-04-14 05:01:17 【问题描述】:

我正在尝试运行 AdamOptimizer 进行一步训练,但未成功。

optimizer = tf.train.AdamOptimizer(learning_rate)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    sess.run(optimizer.minimize(cost), feed_dict=X:X_data, Y: Y_data)

控制台吐出一个丑陋的错误:

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value beta1_power
 [[Node: beta1_power/read = Identity[T=DT_FLOAT, _class=["loc:@W1"], _device="/job:localhost/replica:0/task:0/cpu:0"](beta1_power)]]

在代码中,cost 是一个定义明确的函数,实现了一个 conv NN 加上一个逻辑损失函数,使用两个参数 X、Y(分别是 NN 的入口和训练标签)

关于什么可能是错误的任何想法?

【问题讨论】:

【参考方案1】:

optimizer.minimize(cost) 正在您的图表中创建新的值和变量。

当您调用 sess.run(init) 时,.minimize 方法创建的变量尚未定义:由此您的错误。

你只需要在调用tf.global_variables_initializer()之前声明你的最小化操作:

optimizer = tf.train.AdamOptimizer(learning_rate)
minimize = optimizer.minimize(cost)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    sess.run(minimize, feed_dict=X:X_data, Y: Y_data)

【讨论】:

以上是关于运行亚当优化器的主要内容,如果未能解决你的问题,请参考以下文章

theano GRU rnn 亚当优化器

查询优化器

Oracle优化器

Oracle优化器

sklearn 高斯过程回归器中的优化器调整

禁用火花催化剂优化器