1. 主体思想
-
实验科学:
避免难以复现; 验证idea
-
正确的实验:
必须可复现; 结果可解读、可比较; 良好 code style
-
协作
信息公开; 经常交流
2. 错误行为
¶中途改动导致不可复现实验
- 实验启动后不要改动
- 如果想修改,重新复制,git 管理,做记录
¶修改共用模块
-
实验依赖于公共模块
-
如megdl,neupeak,共用数据,benchmark-tool
-
谨慎修改共用模块,复制出来修改
¶训练数据乱改乱放
-
数据放好,
-
起名时要起有意义的名字
ToF.IR.india.180625
-
数据一旦加入实验,不要轻易移动,宁可复制,不要移动
¶train_log
- 使用 git
- 问,明确 train_log 放在哪里
- 用的什么 python 2 or 3? anaconda 的,conda 安装的,miniconda 的
- pip install?包在 local、home、usr、anaconda?
¶错误工程习惯
-
代码数据混一起。
代码数据严格分离,数据严格按规定放在共享目录下
-
多个 Tmux 编辑同一个文件
-
文件、代码随意命名
¶随意修改实验
- 不要动已有实验
- 复制一份创建新实验,在新地方改(git)
¶私藏
- 实验不共享,不 git push
- 放在私有目录
¶报喜不报忧
自私、不负责的行为
3. 正确行为
¶修改实验5步走
在一个大目录下git init,目录内包含多个实验。
- cp -r exp1 exp2
- git add exp2 && git commit -m “fork exp1 to exp2” 改完就提交,这样直接 git diff
- 修改,改完就提交,直到 bug free
¶科学命名
xiangyu-aug-500.shufflenetv2.41Mops.SENet
¶Work Log
一天10-20组
- 实验名,关键方法,关键数据,关键改动,关键结果
- 搜参调模型,使用图表、思维导图 (work_log的记录方法)
¶一定要量化的定量对比
- 对比模型
- 有榜可刷
- benchmark,从不科学到科学:样本量大,样本全面,样本均衡,要比实际情况难(hard case)。
¶实验原则
- 每个对比实验,只修改一个参数
- 充分利用计算资源,验证多个 ideas
- 不要看 train_log,容易犯困 😄
¶时间分配
上午:分析前一天的结果; 抓紧时间写代码,调参入炉
下午:做碎片工作,看论文,与人交流
傍晚:再下一波丹
!!! 不要让丹炉闲着