【问题标题】:Keras: What if i recompile my model after training few epochsKeras:如果我在训练几个 epoch 后重新编译我的模型怎么办
【发布时间】:2021-02-26 22:31:11
【问题描述】:

我有一个模型,我想用 learning_rate = 0.8 训练它几个时期,然后设置学习率 = 0.4 并继续训练。 但是由于在编译模型时正在设置学习率......那么如果我在几个 epoch 后重新编译模型/权重会发生什么?

下面是我的代码:P.S(我的学习率是动态的)

lr = 0.04
adam = Adam(lr=lr)
weight_factor = 10
models.compile(
    optimizer=adam,
"kullback_leibler_divergence"
    loss = {'W1':kl_divergence,'age':mae},
    metrics={"age": mae,"W1":'accuracy'},
    loss_weights={'W1':weight_factor, 'age': 1}
)

动态学习率回调

callbacks = [
  ReduceLROnPlateau(monitor='val_age_mean_absolute_error', 
                    factor = 0.5, 
                    patience = 7,
                    min_delta = 0.01, 
                    cooldown = 2,
                    min_lr = 0.0001,
                    mode = 'min')
]

培训

epochs=35
history = models.fit(train_gen, steps_per_epoch=len(trainset) / batch_size, epochs=epochs, callbacks=callbacks, validation_data=validation_gen, validation_steps=len(testset) / batch_size * 3)

【问题讨论】:

  • 我的发现:当我用 lr=0.8 训练几个 eopchs 时,然后用 lr=0.4 重新编译并开始训练......我的模型没有得到更多改进。

标签: python tensorflow keras neural-network model-fitting


【解决方案1】:

当您重新编译模型时,您的权重会重置为随机。

所以你应该使用model.save_weights('weights.h5')保存权重然后编译模型,然后加载权重model.load_weights('weights.h5')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2019-06-18
    • 2020-07-11
    • 1970-01-01
    • 2020-10-22
    • 2021-01-31
    相关资源
    最近更新 更多