繁体   English   中英

tf.keras.optimizers.Adam和其他最小化的优化器

[英]tf.keras.optimizers.Adam and other optimizers with minimization

我想用tf.contrib.keras来玩它。 但是,有些事情我不明白。 来自tf.train的类具有minimize您用于优化函数的函数。 但是, tf.contrib.keras.optimizers的类不存在此minimize函数。 假设我们有以下代码:

# tensorflow
tf.train.AdamOptimizer(learning_rate=0.001)
updateModel = trainer.minimize(loss)

# keras wrapper
trainer=tf.contrib.keras.optimizers.Adam()
updateModel = trainer.minimize(loss) # ERROR because minimize function does not exists

keras包装器不能工作,因为没有minimize功能。 我试图寻找一个例子或使用替代方法tf.keras与tensorflow,但我没有找到任何可以帮助我这一点。

PS我在这里使用tf.contrib.keras.optimizers.Adam作为一个虚拟示例,但我想使用同一个包中的其他优化器。

这是由于kerastensorflow API之间的差异造成的。 keras优化器是模型编译期间提供的函数,用于梯度下降优化:

model.compile(optimizer='adam', ...)
model.fit(..) <- optimiziation performed using Adam algorithm

tensorflow - 您可以按照自定义的方式使用它。

您的困惑是由于tf.contrib.keras API 不是精确的张量流并且不打算像核心张量流1那样使用。

如果你看看源代码,从类tf.contrib.keras.optimizers几乎相同,从那些keras.optimizers 例如,第一个Optimizer和第二个Optimizer ,第一个SGD和第二个SGD ,依此类推。 Keras正在逐步纳入tensorflow,但现在它更像是与tensorflow捆绑在一起的另一个项目,并且不能轻易地与任意张量流图一起使用。 相反, keras优化器应该与keras层一起使用。

所以你可以坚持使用all-tensorflow API并使用tf.train.AdamOptimizer (就像你现在做的那样)或者使用all-keras API并使用Adam (参见Marcin的回答)。 我认为混合两者没有任何价值。


1至少在TF 1.x. 在未来的版本中,Keras可能会与TF集成更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM