默认 Adam 优化器在 tf.keras 中不起作用,但字符串 `adam` 起作用

kit*_*tty 6 python machine-learning deep-learning keras tensorflow

我一直在试用 TensroFlow v2 beta,我正在试用 tf.keras 模型。

当我编译模型并选择优化器作为 string 时'adam'。可以正确训练模型:

model.compile(optimizer='adam', loss='categorical_crossentropy')
model.fit(x, y)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用默认优化器时,tf.keras.optimizers.Adam()它无法训练并nan在每次迭代时输出损失。

adam = tf.keras.optimizers.Adam()
model.compile(optimizer=adam, loss='categorical_crossentropy')
model.fit(x, y)
Run Code Online (Sandbox Code Playgroud)

字符串不'adam'应该是默认的亚当优化器还是我错过了什么?我已经尝试了几个超参数(learning_ratebeta_1beta_2等),但似乎都不起作用。这很重要,因为我可能不想一直使用默认的超参数。

谁能解释这种行为?

Dji*_*011 7

经过一番挖掘后,似乎当您输入字符串时,'adam'它会调用另一个 adam ,它称为adam_v2

这可以在这里找到。

from tensorflow.python.keras.optimizer_v2.adam import Adam

adam = Adam()

model.compile(optimizer=adam, loss='categorical_crossentropy')
model.fit(x, y)
Run Code Online (Sandbox Code Playgroud)