簡體   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