python - Keras:如果我在训练几个 epoch 后重新编译我的模型怎么办
问题描述
我有一个模型,我想用 learning_rate = 0.8 训练它几个时期,然后设置学习率 = 0.4 并继续训练。但是由于在编译模型时正在设置学习率......那么如果我在几个时期后重新编译模型/权重会发生什么?
下面是我的代码:PS(我的学习率是动态的)
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)
解决方案
当您重新编译模型时,您的权重将重置为随机。
所以你应该使用model.save_weights('weights.h5')
然后编译模型来保存权重,然后加载权重model.load_weights('weights.h5')
推荐阅读
- c - 如何修改 CMakeList.txt:找到库,但存在链接错误
- php - 获取 PHP 数组的值
- mapbox - Mapbox 不会隐藏特定缩放级别的标记
- oop - 绘制 UML 类图时将行为放在正确的类中
- python - 如何在 Pandas 中查找空数据时间
- ionic-framework - 在 ionic 3 中从单页导航到选项卡和特定视图
- matlab - 如何在同一图中绘制多个函数的傅里叶变换
- usb - FTDI Bit-Bang 抖动(FT232R 与 FT232H)
- java - Netty:空闲状态处理程序未显示通道是否空闲
- php - 尝试从 PHP 和 MySQL 将数据发送到 AJAX 中的警报