在Keras中使用Adam优化器进行恢复训练

问题描述 投票:2回答:1

我的问题很简单,但到目前为止(网上)我找不到明确的答案。

[在定义次数的训练后,使用adam优化程序训练的keras模型的权重已保存为:

callback = tf.keras.callbacks.ModelCheckpoint(filepath=path, save_weights_only=True)
model.fit(X,y,callbacks=[callback])

当我关闭jupyter之后恢复训练时,我可以简单地使用:

model.load_weights(path)

继续训练。

由于Adam取决于时代数(例如学习率下降的情况,所以我想知道在与以前相同的条件下恢复训练的最简单方法。

按照ibarrond的回答,我写了一个小的自定义回调。 (也有评论,但格式不正确)

weight_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path, save_weights_only=True, verbose=1, save_best_only=True,mode='auto')

class optim_callback(tf.keras.callbacks.Callback):
    '''Custom callback to save optimiser state'''
    def on_epoch_end(self):
        optim_state = tf.keras.optimizers.Adam.get_config()
        with open(optim_state_pkl,'wb') as f_out:                  
                    pickle.dump(optim_state,f_out)

model.fit(X,y,callbacks=[weight_callback,optim_callback()])

我只想检查这是否正确。再次非常感谢!

python tensorflow keras adam
1个回答
2
投票
之后,我保存了用亚当优化器训练的keras模型的权重

为了完美地捕获优化器的状态,应使用功能get_config()存储其配置。此函数返回一个字典(包含选项),可以使用get_config()将其序列化并存储在文件中。

要重新启动该过程,只需pickle即可检索具有配置的词典,然后使用pickle的功能d = pickle.load('my_saved_tfconf.txt')生成Adam优化器。>

© www.soinside.com 2019 - 2024. All rights reserved.