请教一个模型,先用nadam做优化,然后一定程度以后,想改为SGD,求问怎么操作?

先用nadam收敛
然后最后想再用SGD跑一下
如果修改优化器?

定义两个优化器

adam_optimizer = tf.keras.optimizers.Adam(...)
sgd_optimizer = tf.keras.optimizers.SGD(...)

然后按需使用就可以了。比如

for batch_id in range(num_batches):
    ....
    if batch_id < threshold:
        adam_optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables))
    else:
        sgd_optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables))

不过训练中途切换优化器这种事情我没有做过,可能需要你试一下。

1 Like