【问题标题】:Tensorflow adam optimizer in KerasKeras 中的 Tensorflow 亚当优化器
【发布时间】:2019-02-09 15:33:50
【问题描述】:

我在 Tensorflow 中有一个网络,我正在尝试在 Keras 中重新实现它。目前,与 Tensorflow 模型相比,Keras 模型的表现完全逊色。与原始模型相比,损失要高得多,下降得更慢。我最好的猜测是我使用了错误的优化器。在 TensorFlow 代码中,优化器如下所示:

global_step = tf.Variable(0, trainable=False)
learning_rate = tf.train.exponential_decay(0.0001,
                                           global_step,
                                           decay_steps=10000,
                                           decay_rate=0.33,   
                                           staircase=True)
optimizer = tf.train.AdamOptimizer(learning_rate, epsilon=1e-8)
train_op = optimizer.minimize(total_loss, global_step)

在 Keras 中是这样的:

adam = keras.optimizers.Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
model.compile(loss=get_loss_funcs(), optimizer=adam)

有没有办法在 Keras 中实现 Tensorflow 优化器?

【问题讨论】:

  • 通常情况下,您不需要将指数衰减添加到 Adam,因为它已经存在;尽管如此,您似乎并不是唯一一个尝试这个(并报告更好的结果)的人 - 这可能会有所帮助(可以说,解决方案确实是通过回调衰减lr):Learning rate decay in addition to Adam?
  • @desertnaut 这似乎是解决方案。我的损失仍然很糟糕,但我想问题出在我的代码的其他部分。如果您将此作为答案,我会接受。非常感谢
  • 下面的TFOptimizer 答案呢?你试过了吗?
  • 我意识到优化器不是问题,因为即使在前 10000 次迭代中,训练的表现也差很多。所以在learning_rate的exponential_decay生效之前
  • 公平;不过我给了@Alexis 一个赞成票,因为我不知道那个细节......

标签: python tensorflow machine-learning keras deep-learning


【解决方案1】:

是的,有! - TFOptimizer

class TFOptimizer(Optimizer):
"""Wrapper class for native TensorFlow optimizers.
"""

它是这样称呼的:

keras.optimizers.TFOptimizer(optimizer)

包装将帮助您查看问题是否是由优化器引起的。

【讨论】:

  • keras.optimizers.TFOptimizer(optimizer) 是否考虑了全局步骤?
  • 但只有在 optimizer.minimize(total_loss, global_step) 我们说 global_step 应该在每次迭代中增加。使用 keras.optimizers.TFOptimizer(optimizer) 我们不会向 Keras 提供此信息,因此 Keras 需要假设它必须在每次迭代时增加 global_step。我不确定 Keras 是否这样做
  • 这样吗? optimizerTF = tf.train.AdamOptimizer(learning_rate, epsilon=1e-8),然后是kOpt=keras.optimizers.TFOptimizer(optimizerTF),然后是model.compile(loss=get_loss_funcs(), optimizer=kOpt)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 2017-03-28
  • 2018-04-14
  • 1970-01-01
相关资源
最近更新 更多