BatchNorm层训练和测试的注意事项
2017-11-20 21:56
330 查看
1:BatchNormal层:
BN层的设定一般是按照conv->bn->scale->relu的顺序来形成一个block。
关于bn,有一个注意点,caffe实现中的use_global_stats参数在训练时设置为false,测试时设置为true。
因为在训练时bn作用的对象是一个batch_size,而不是整个训练集,如果你没有将其设置为false,则有可能造成bn后数据更加偏离中心点,导致nan或87.3365的问题。所以你可以尝试一下修改这个参数。
2:如何在RGB数据集上训练灰度图模型
把第一层卷积层改个名字就可以,貌似finetuning初始化模型是根据prototxt里面的layer的name初始化的,只有第一层blob的shape不同,所以第一层就不复制,直接随机初始化就行了
然后再慢慢finetune,速度上基本上没影响。
3:dropout层
训练的时候,我们通常设定一个dropout ratio = p,即每一个输出节点以概率 p 置0(不工作)。假设每一个输出都是相互独立的,每个输出都服从二项伯努利分布B(1-p),则大约认为训练时只使用了 (1-p)比例的输出。
测试的时候,最直接的方法就是保留Dropout层的同时,将一张图片重复测试M次,取M次结果的平均作为最终结果。假如有N个节点,则可能的情况为R=2^N,如果M远小于R,则显然平均效果不好;如果M≈N,那么计算量就太大了。因此作者做了一个近似:可以直接去掉Dropout层,将所有输出都使用 起来,为此需要将尺度对齐,即比例缩小输出
r=r*(1-p)。
即如下公式:
特别的, 为了使用方便,我们不在测试时再缩小输出,而在训练时直接将输出放大1/(1-p)倍,代码中已经实现。
结论: Dropout得到了广泛的使用,但具体用到哪里、训练一开始就用还是后面才用、dropout_ratio取多大,还要自己多多尝试。有时添加Dropout反而会降低性能。
BN层的设定一般是按照conv->bn->scale->relu的顺序来形成一个block。
关于bn,有一个注意点,caffe实现中的use_global_stats参数在训练时设置为false,测试时设置为true。
因为在训练时bn作用的对象是一个batch_size,而不是整个训练集,如果你没有将其设置为false,则有可能造成bn后数据更加偏离中心点,导致nan或87.3365的问题。所以你可以尝试一下修改这个参数。
2:如何在RGB数据集上训练灰度图模型
把第一层卷积层改个名字就可以,貌似finetuning初始化模型是根据prototxt里面的layer的name初始化的,只有第一层blob的shape不同,所以第一层就不复制,直接随机初始化就行了
然后再慢慢finetune,速度上基本上没影响。
3:dropout层
训练的时候,我们通常设定一个dropout ratio = p,即每一个输出节点以概率 p 置0(不工作)。假设每一个输出都是相互独立的,每个输出都服从二项伯努利分布B(1-p),则大约认为训练时只使用了 (1-p)比例的输出。
测试的时候,最直接的方法就是保留Dropout层的同时,将一张图片重复测试M次,取M次结果的平均作为最终结果。假如有N个节点,则可能的情况为R=2^N,如果M远小于R,则显然平均效果不好;如果M≈N,那么计算量就太大了。因此作者做了一个近似:可以直接去掉Dropout层,将所有输出都使用 起来,为此需要将尺度对齐,即比例缩小输出
r=r*(1-p)。
即如下公式:
特别的, 为了使用方便,我们不在测试时再缩小输出,而在训练时直接将输出放大1/(1-p)倍,代码中已经实现。
结论: Dropout得到了广泛的使用,但具体用到哪里、训练一开始就用还是后面才用、dropout_ratio取多大,还要自己多多尝试。有时添加Dropout反而会降低性能。
相关文章推荐
- 转:C++多线程调试和测试的注意事项
- 关于应用gpu训练神经网络的注意事项
- 性能测试准备工作中的注意事项
- C++多线程调试和测试的注意事项
- 性能测试注意事项(Tag到这篇帖子,个人觉得不够完善,有机会扩展一下)
- rest API 测试注意事项
- iOS测试的一般流程和注意事项
- 分类器训练——haar分类器的使用方法及注意事项
- OpenCV的HOG+SVM训练程序注意事项
- opencv SVM 训练行人检测器注意事项
- View6.2安全服务器测试环境注意事项
- android 过USB-IF测试注意事项及修改
- HTML本地测试成功后上传博客注意事项
- JDK1.6安装详解、环境变量设置、测试安装及注意事项
- Eclipse真机测试注意事项
- 软件测试自动化的注意事项
- 嵌入式开发中网络性能测试工具iperf的使用方法和注意事项
- 需求测试注意事项有哪些
- 7×24性能测试注意事项
- Jmeter 测试http+JSON注意事项