我有一个大的数据集用来训练一个神经网络模型。但是,我没有足够的资源对整个数据集进行适当的超参数调优。因此,我的想法是对数据子集(例如10%)进行调整,这显然不会给出像整个数据集那样好的估计,但是由于它已经是大量的数据,所以我认为它可能会给出足够的估计。
然而,我不知道学习率与训练规模之间是否有某种关系,除了在次抽样时估计会更吵闹之外。所谓关系,我指的是一些经验法则,例如,当你增加训练集的大小时,增加你的“最优”LR。我没有看到任何(除了LR和批处理大小之间的关系,但这实际上是另一个话题),但我很乐意确保我没有遗漏任何东西。
发布于 2021-05-16 11:38:21
我不知道你为什么要调整学习率(太高)?在许多平台上,您可以包括类似于学习速率调度程序之类的内容。如果没有更多的学习进展,就会降低学习速度。所以你在训练的时候“调整学习速度”。
使用喀拉斯,这看起来可能是:
early_stopping = EarlyStopping(monitor='val_loss', patience=50, mode='auto', restore_best_weights=True)
reduce_on_plateau = ReduceLROnPlateau(monitor="val_loss", factor=0.9, patience=20, cooldown=5, verbose=0)
checkpoint = ModelCheckpoint("xy.hdf5", monitor='val_loss', verbose=0, save_best_only=True, save_weights_only=True, mode='min')
...
model.fit(...,callbacks=[early_stopping, reduce_on_plateau, checkpoint]
上面的回调引入了“早期停止”(如果没有更多的进展就停止)、“在平台上减少”(在需要时降低学习率)和“检查点”(保存每个时代的模型结果)。
从一些合理的学习率标准值开始,必要时降低。
https://datascience.stackexchange.com/questions/94508
复制相似问题