trecvid search task项目一点经验

  配合老师,师兄做完trecvid search task 的任务, 不算很大项目,但是确实是比较复杂的一个. 包括07-093年数据,训练及测试, input几种不同数据的整理,output以及在实验过程中参数的不断调整. 相对于平时简单任务的编码来说, 有以下的体会:

 

 

1, 自动化: 

    C/C++很强大, 他们是主力, 但perl, bat 这些脚本 辅助作用 在做实验时, 相当节省人力.  做实验, 调参数, 是一个反复的过程.

 

    perl语言, 更写 cfg文件, 将不同 exe 连接 自动化处理 确实帮助很大, 而且 大大降低了 出错的可能.

 

 

2, 命名合理与统一

   类, 变量, 项目的命名, 包括输入输出文件的命名 是个很重要的问题. 要确保 一看就懂是什么, 而不是 花点时间 去check. 从而提高工作效率. 当然这需要 一定的 注释.  有时, 使用合理的英文名称来 命名,  是一项很有讲究的事, 体现编码的水平.

 

  命名的统一, 更多体现在 自动化批处理上.   在做实验时, 这点很重要.

 

  实验时, 由于不同参数,方法的选择, 产生出很多临时文件, 要注意 区别.

 

 

 

3, 编码时规范

   1), 多写注释, 刚写代码时, 肯定知道每一步都是啥意思, 问题是代码多了以后呢.  命名再好, 都可能 不知道是什么意思. 或者看很久去check下, 比较 浪费时间.

 

   2), 代码尽可能把输入输出分离, 使用cfg 是个好方法.  使用工作目录, 相对路径. 程序前 配置 使用环境 也是 一劳永逸的方法.

 

   3), 不要偷懒, 不要为了方便, 能用宏 替换的 变量 一定要用宏 替代. 总之, 提升代码的 可重用性.  

 

   4), 编写代码是一项艺术,  出来的最好是 艺术品, 而不只是 一次性的产品.

 

   5), 效率问题,

        一直以为 现在讨论 cout与printf的区别 没有意义. cout 方便的多.  但是效率差5到10倍. 当读写大量小文件时, 这种开销差异就很明显. 比如, 当需要调试代码时, load input  data做输入, 然后再检验算法 是否正确时, 1分钟和5分钟 差别是很大的.  而且, 当你load数据 漫长等待10分钟后, 程序出错了. 结局是悲剧的.    师兄说他们做acm时, 从来不用 cout.

 

   6), 代码调试问题: 

       刚才所说的, load数据是一个问题. 需要更多调试的技巧才行.  每调试一个bug, 等10分钟, 这是难以 忍受的.

 

 

4, 开如时多做些事, 以后就省不少力. 而且出现错误的概率小.

  并且, 刚开始时, 做的事情单一, 而以后 几个作务同时 做时, 更会麻烦

 

 

5, 做好记录工作.  防止重复实验.

 

 

6, 做实验是一个麻烦的事. 来不得半点偷懒. 

   最恐怖的事 是一次实验完成了, 结果 不理想, 好几次, 差点崩溃. 

   和老师, 师兄比起来.  觉得自己太 naive 了.  呵呵, 做实验这很正常. 因为你要解决的问题, 是未知的.   遇到问题, 应该是 找出问题的可能地方, 并且不断去想新的方法, 而不是 惧怕.....  不成熟!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值