• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Tensorflow:使用Adam优化器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我正在试验TensorFlow中的一些简单模型,其中包括与入门MNIST for ML Beginners example非常相似的模型,但具有较大的维度。使用梯度下降优化器时,没有问题,收敛性足够好。但是,当我尝试使用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)]]

提示在运行时未初始化的特定变量被改变。这个错误是什么意思?无论我使用的学习速率如何,它似乎都会发生。

最佳解决办法

这应该是一个经常遇到的问题,当运行一个在初始化之前读取tf.Variable的操作时,通常会引发此异常。

AdamOptimizer类创建称为”slots”的其他变量来保存”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()不会初始化任何内容,它只会添加在运行时初始化变量的操作。)

在添加优化器之后,您必须执行的操作是call 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)

附图1:各种迭代算法训练开销(adam对比)

附图2:迭代算法动态图

参考资料

  • Tensorflow: Using Adam optimizer


鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
如何判断查看tensorflow是否在python shell中使用gpu加速?发布时间:2022-05-14
下一篇:
梯度提升入门介绍(GBM)发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap