深度学习炼丹师的养成之路之——How to subtract the mean value
来源:互联网 发布:wap彩票网站源码 编辑:程序博客网 时间:2024/06/05 10:11
今天这个文章题目的名字好啰嗦啊,其实主要是为了提醒自己要有“工匠精神”,在深度学习的修炼之路上学会有耐心,慢工出细活。如果到头来只会盲目地堆网络和试参数,这就背离了修炼的正轨了。好了,闲话不多说。
今天主要写的是一个关于在transfer learning的时候,需要注意的问题。虽然是一个看似不起眼的细节,但是须知这些小小的细节有时候却能左右DL的learning过程,从而对最后的模型产生潜移默化的影响。
具体来说就是,比如我们一般喜欢把ImageNet上train好的模型拿过来,迁移到我们手头自己的数据上来。而网络的最前端,免不了有一个数据层,而且要对数据做一些preprocess或者transform。经常要做的一件事就是要demean(去均值)的处理,那么,从ImageNet上train好的模型,拿过来用的话,我们减的均值究竟是应该减ImageNet上的均值,还是我们手头自己数据的均值呢?
ImageNet的均值一般取为[104, 117, 123](四舍五入后的值,BGR的通道顺序了,适用于Caffe)
这确实是一个问题。。
我在网上找了一圈,发现PyTorch下面有一个讨论的帖子,讲得挺好的。我大概总结一下就是:
- 一般来说,ImageNet数据足够有代表性了,自己手头的数据均值应该和ImageNet的差别不大(但私以为这个还是要看情况的,比如海面的高分遥感图像中,虽然也是RGB,但是计算出的均值差别可就大了)
- 通常来说,如果你freeze了前面的一些layer,那么原则上就要继续用ImageNet的均值更好。比如说把ImageNet上训好的VGG拿过来做自己网络的frontend,而且freeze了conv1-conv5,那么最好还是接着用ImageNet的均值,让网络不受扰动地提取特征。但是!不得不提的是,我随后看了一些网络,包括DeepLab,SSD等,他们虽然并没有freeze任何的layer,而且都是train from scratch(只不过用pretrain的模型提供一个更好的initia weight),但都继续沿用了ImageNet的均值来做demean。我觉得可能论文的作者们都认为自己处理的VOC, COOC等数据集和ImageNet差别不大吧(也就是上一点的理由)
- 其余的时候,如果没有充分的理由,我觉得都应该用自己的手上的数据去作为总体均值的估计。
That’s all~
阅读全文
0 0
- 深度学习炼丹师的养成之路之——How to subtract the mean value
- 深度学习炼丹师的养成之路之——Batch size/Epoch/Learning Rate的设置和学习策略
- 微软亚马逊联手发布深度学习库Gluon,适合所有段位的炼丹师
- 架构师养成之路--学习资料
- Tracking算法学习之mean-shift——Robust Scale-Adaptive Mean-Shift for Tracking
- Tracking学习之mean-shift——Scale and Orientation Adaptive Mean Shift Tracking
- 程序员的养成之路
- opencv学习之mean函数
- 成才之路(3):养成善于学习的习惯
- 架构师成长之路--学习习惯养成
- 项目经理养成之路
- CocoaPods养成之路
- 优质学习之荣耀养成
- 深度学习之路
- qt 之 How to Change the Background Color of QWidget
- 程序员养成架构师之路
- 树莓派养成之路 ——系统安装
- 树莓派养成之路 ——GPIO控制
- sdut 2128 树结构练习——排序二叉树(BST)的中序遍历
- Chrome使用技巧 前端开发的一些技巧
- oracle基础知识
- CCF认证 201409-1:相邻数对
- LaTex列表
- 深度学习炼丹师的养成之路之——How to subtract the mean value
- Python爬虫——2017高校网络信息安全管理运维挑战赛:快速计算
- html5之页面跳转-hash
- nginx监控界面
- JavaScript的基本语法
- 流程图控件(FlowChart.Net) v6.1.3 官方免费版下载附安装教程
- Python3中bytes和HexStr之间的转换
- git merge失败后处理方法
- 简单工厂模式