首页 文章

Tensorflow:50个epoches训练后,resnet-56的学习率达到饱和,但测试准确性仍不理想[关闭]

提问于
浏览
-2

我构建了一个56层残差网络来训练CIFAR-10数据集进行图像分类 . 虽然它是最先进的网络架构,但在10个epoches培训中,我的模型测试准确率为79% .

训练数据集大小为49000,验证数据集大小为1000.我在20个时段训练模型,小批量大小为128.学习率为1e-3 . 我使用Xavier初始化和RMProp进行梯度下降 .

请参阅此处了解我的实施 . https://github.com/Jiancong/cs231n_2017/blob/master/assignment2/TensorFlow.ipynb

结果如下
enter image description here

我试图将学习率降低到1e-4,同时测试精度也降低了 . 我试图将训练时间增加到15个 . 准确度增加如下 .

enter image description here

我将训练时间增加到50,测试精度达到了85% .

增加的训练时间似乎现在不起作用 . 我还值得尝试一下吗?

1 回答

  • 1

    你可以在这里调整很多选项;您目前面临的通常被称为“超参数优化”,它本身就是一个完整的研究领域 .

    基本上,您希望以获得最佳结果的方式调整参数 . 首先,我建议你简单地训练一段时间(更多的时期) . 我自己从未接受过CIFAR-10的培训,但可能会在很晚之后达成融合(尽管我对此表示怀疑) . 另外,我建议你按照早期停止的方式实施一些东西 .

    而不是总是使用最新的模型,而是使用(即检查点)具有最高验证准确度的模型,希望这是最能概括为看不见的数据的那个 . 即使它在您的训练数据上可能没有完美的分数,但它在大多数情况下会在练习中更好地为您服务 .
    完成整个运行(或验证损失方面没有明显改善)后,您可以尽早取消培训程序 .

    此外,我不确定您使用剩余块的内部进行了多少操作,但也许您可以尝试在此处调整一些参数,例如卷积大小,每个残余块的卷积,要素数量等 .

    有很多需要注意的,但我假设你的架构方面大多坚持ResNet paper . 遗憾的是,还有很多运气,因为良好的随机初始化可能会产生更好的结果与其他类似的属性(更多细节见this paper),所以简单地选择一个不同的随机种子可能有助于......

    最后,但并非最不重要的,我建议你研究不同的优化器:通常,默认SGD "only works so well"(尽管它仍然是一个很好的工具,在某些情况下可能效果最好) . 添加更高级的指标,最简单的指标,例如momentum,可能会带来更好的收敛 .

    大多数深度学习工具都为您提供了各种各样的优化器 . 亚当优化器是一个不错的选择 . 当然有不同的,可以找到概述[here](http://,%20or%20variations%20of%20AdaGrad,%20that%20use%20%22some%20fancy%20math%22%20(specifically,%20derivative%20information,%20or) .

相关问题