我在一开始就犯了这个错误。我随机分割数据集,获得了超过99.6%的惊人的良好验证准确性。测试准确性仅为87%时,我感到很惊讶: 测试准确性和验证准确性之间的巨大差异是验证集设计不当或过度拟合验证集。
正确的方法是找到一系列图像,并将每个系列全部放入训练或验证集中,确保它们不会分割成两个。要了解关于创建一个好的验证集的更多信息,请阅读Rachel Thomas撰写的这篇文章。
www.fast.ai/2017/11/13/validation-sets/
算法搜索一个好的起始学习率。对于分类就用0.1*bn/256(bn表示batchsize)
def plot_loss_change(sched, sma=1, n_skip=20, y_lim=(-0.01, 0.01)):
"""
Plots rate of change of the loss function.
Parameters:
sched - learning rate scheduler, an instance of LR_Finder class.
sma - number of batches for simple moving average to smooth out the curve.
n_skip - number of batches to skip on the left.
y_lim - limits for the y axis.
"""
derivatives = [0] * (sma + 1)
for i in range(1 + sma, len(learn.sched.lrs)):
derivative = (learn.sched.losses[i] - learn.sched.losses[i - sma]) / sma
derivatives.append(derivative)
plt.ylabel("d/loss")
plt.xlabel("learning rate (log scale)")
plt.plot(learn.sched.lrs[n_skip:], derivatives[n_skip:])
plt.xscale('log')
plt.ylim(y_lim)
learn.lr_find()

本文揭示了在机器学习项目中,随机分割数据集可能导致的验证集陷阱,即验证准确性与测试准确性间的显著差异。文章建议应将相关联的数据样本整体放入训练或验证集,避免过度拟合。此外,介绍了通过算法搜索最佳初始学习率的方法,提供了实用的代码示例。
1万+

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



