zoukankan      html  css  js  c++  java
  • 深度学习-网络调参技巧

    最近在做深度学习实验,跑一次实验轻则以小时计、重则以天计,实在没有那么多的时间可以等待,因此想想用尽可能少的实验次数,得到尽可能好的实验效果。这样的话,问题就可以归结为如何设计合适的网络结构、如何设计合适的训练策略,主要就是:

    1. 层数、每一层卷积核个数、卷积权重初始化方式、dropout ratio、BN、全连接层神经元个数、Relu等网络结构参数应该如何选?
    2. 学习率、decay等solver参数又该如何设置?

    在参考炼丹实验室的基础上,并结合自己的体会,谈谈对调参的理解,大家如果有其他技巧,也欢迎多多交流。

    • 网络结构设计

    如果我们在Cifar10数据集上进行实验,最好能够找几个在该数据集上效果较好的网络结构,看看别人的网络超参数是如何设置的,有什么共性(比如每一层卷积核的个数、大小、层数等)。原则就是“尽可能采用成熟的网络结构,近可能少改动网络结构”。

    • 实验的输出

    一般情况下,在实验的时候会有,train loss、test loss、训练集准确率、测试集准确率,根据它们的特点,我们大致可以得出网络的状态。训练集准确率高、测试集准确率低,过拟合;训练集准确率低、测试集准确率低,欠拟合;训练集、测试集上的准确率和初始状态相比,没有明显的变化,网络在“徘徊”。

    • “过拟合”

    这时候需要提高网络的泛化能力,例如引入dropout、或者增大已有dropout ration等。

    • “欠拟合”

    这时候需要增强模型的拟合能力,,例如增加网络层数、增加节点数,减少dropout等。

    • “徘徊”

    我现在面对的就是这样的状态,现在还没有明确的“应对指导思想”。

  • 相关阅读:
    十天冲刺---Day10
    十天冲刺---Day9
    团队博客目录
    【Beta阶段】M2事后分析
    【Beta阶段】展示博客
    【Beta阶段】测试报告
    【Beta阶段】发布说明
    【Beta阶段】团队源代码管理
    【Beta阶段】第十次Scrum Meeting!!!
    【Beta阶段】第九次Scrum Meeting!(论坛已成功上线)
  • 原文地址:https://www.cnblogs.com/everyday-haoguo/p/DL-Parameters.html
Copyright © 2011-2022 走看看