机器学习中的虚拟轮次与迁移学习
1. 训练步骤与超参数调整问题
在机器学习模型训练中,我们通常会设定一定的训练步骤。例如,先训练 143,000 步,之后重启训练并延长一些步数(如 10,000 步),只要模型持续收敛,就继续延长训练。然后更新代码中的步数参数以反映新的训练步数。
然而,当进行超参数调整时,这个方法就会出现问题。比如,若将批量大小改为 50,由于我们是按固定的 143,000 步训练,而每一步的长度变为原来的一半,训练时间就会减半,这显然不利于模型训练。
2. 虚拟轮次解决方案
解决上述问题的办法是保持展示给模型的训练样本总数(而非训练步数)恒定。以下是相关参数设定及代码示例:
NUM_TRAINING_EXAMPLES = 1000 * 1000
STOP_POINT = 14.3
TOTAL_TRAINING_EXAMPLES = int(STOP_POINT * NUM_TRAINING_EXAMPLES)
BATCH_SIZE = 100
NUM_CHECKPOINTS = 15
steps_per_epoch = (TOTAL_TRAINING_EXAMPLES // (BATCH_SIZE*NUM_CHECKPOINTS))
cp_callback = tf.keras.callbacks.ModelCheckpoint(...)
history = model.fit(trainds,
validation_data=evalds,
epochs=NUM_CHECK
虚拟轮次与迁移学习解析
超级会员免费看
订阅专栏 解锁全文
982

被折叠的 条评论
为什么被折叠?



