我在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优化器?
答案 0 :(得分:4)
是的! -TFOptimizer
class TFOptimizer(Optimizer):
"""Wrapper class for native TensorFlow optimizers.
"""
这样称呼:
keras.optimizers.TFOptimizer(optimizer)
包装将帮助您查看问题是否归因于优化器。