深度学习中的超参数设定

一、网络超参数的设定

  • 输入数据像素大小的设定:

    • 为便于GPU并行计算,一般将图像大小设置为到 2 的 次幂
  • 卷积层参数的设定:

    • 卷积核大小一般使用 1 1 3 3 5 5
    • 使用 zero padding,可以充分利用边缘信息、使输入大小保持不变
    • 卷积核的个数通常设置为 2 的次幂,如 64, 128, 256, 512, 1024 等
  • 池化层参数的设定:

    • 一般采用卷积核大小 2 2 ,步长为 2
    • 也可采用 stride convolutional layer 来代替池化层实现下采样
  • 全连接层(可使用 Global Average Pooling 来代替):
    • Global Average Pooling 和 Average Pooling(Local) 的差别就在 “Global” 这个字眼上。Global 和 Local 在字面上都是用来形容 pooling 窗口区域的。Local 是取 Feature Map 的一个子区域求平均值,然后滑动;Global 显然就是对整个 Feature Map 求均值了(kernel 的大小设置成和 Feature Map 的相同)
    • 所以,有多少个 Feature Map 就可以输出多少个节点。一般可将输出的结果直接喂给 softmax 层
      这里写图片描述

二、训练超参数设定及技巧

  • learning-rate 的选择
    • 固定学习率时,0.01,0.001 等都是比较好的选择,另外我们可以通过 validation error 来判断学习率的好坏,如下图所示。
    • 自动调整学习率时,可使用 learning rate decay 算法(step decay,exponential decay)或一些自适应优化算法(Adam,Adadelta)。
      这里写图片描述
  • mini-batch 的选择

    • batch size 太小会使训练速度很慢;太大会加快训练速度,但同时会导致内存占用过高,并有可能降低准确率。
    • 所以 32 至 256 是不错的初始值选择,尤其是 64 和 128,选择2的指数倍的原因是:计算机内存一般为 2 的指数倍,采用 2 进制编码。
      这里写图片描述
  • the number of training iterations or epochs

    • Early Stopping:如果验证误差未在一段时间内(eg:200 次迭代)训练内降低,则停止训练过程
    • tf.train 的训练钩子函数中已存在两个预定义的停止 Monitor 函数。
      • StopAtStepHook:用于在特定步数之后要求停止训练的 Monitor 函数
      • NanTensorHook:监控损失并在遇到 NaN 损失时停止训练的 Monitor 函数
  • shuffle per epoch

  • 梯度裁剪:防止梯度爆炸


三、参考资料

1、深度学习手册 - 第 11.4 章:选择超参数
2、神经网络和深度学习手册 - 第 3 章:如何选择神经网络超参数?
3、系统评估 CNN 在 ImageNet 上的进步

猜你喜欢

转载自blog.csdn.net/mzpmzk/article/details/80136958
今日推荐