当前位置: 首页 > 面试题库 >

Tensorflow:使用Adam优化器

公孙新觉
2023-03-14
问题内容

我正在尝试使用张量流中的一些简单模型,包括一个看起来与第一个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)]]

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


问题答案:

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)


 类似资料:
  • 我试图写一个tenstorflow脚本,用于使用模型的图结构训练图像分割。我正在改编一些在线教程中的代码,很明显我做错了什么(或很多事情)。当我尝试使用adam优化器定义优化器时(见下文),我得到一个,指示

  • 优化器是扩展类,其中包括用于训练特定模型的附加信息。优化器类使用给定的参数进行初始化,但重要的是要记住不需要。优化器用于提高训练特定模型的速度和性能。 TensorFlow的基本优化器是 - 此类在 路径中定义。 以下是Tensorflow中的一些优化器 - 随机梯度下降 随机梯度下降与梯度剪裁 动量 Nesterov动量 Adagrad Adadelta RMSProp Adam Adamax

  • 梯度下降优化是数据科学中的一个重要概念。考虑下面显示的步骤,以了解梯度下降优化的实现 - 第1步 包括必要的模块和声明和变量,我们将通过它来定义梯度下降优化。 第2步 初始化必要的变量并调用优化器来定义和调用相应的函数。 上面的代码行生成一个输出,如下面的屏幕截图所示 - 可以看到必要的时期和迭代的计算如上面输出中所示。

  • TLDR: 一个简单的(单隐藏层)前馈Pytorch模型被训练来预测函数的性能大大低于使用Keras构建/训练的相同模型。为什么会这样,可以做些什么来减轻性能差异? 在训练回归模型时,我注意到PyTorch的性能大大低于使用Keras构建的相同模型。 这种现象以前已经被观察和报道过: > 相同的模型在pytorch上产生的结果比在张量流上更差 pytorch中的CNN模型比Tensoflowflo

  • 提前感谢您的考虑, 我刚刚使用以下步骤安装了tensorflow(在一台已经安装了Ubuntu 16.04和CUDA 8.0的新机器上): 最初,我使用。我收到了留言 TensorFlow库没有编译成使用SSE3指令,但是这些指令在您的机器上可用,可以加快CPU计算速度。 W tensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库的

  • 本文向大家介绍Adam相关面试题,主要包含被问及Adam时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Adam 算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率(即 alpha)更新所有的权重,学习率在训练过程中并不会改变。而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。