深度学习之路—写在开题前

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hunterlew/article/details/52825218

明天即将研究生开题答辩,旁边机器还在跑着程序验证最新的网络结构,在笔记本上敲打心情日记。接到深度学习目标识别的题目真是阴差阳错,今年4月份alphago获胜的时候,王老师表示很关心这个方向,希望我们也做一个“狗”出来。我们都把它当玩笑了,事后,我尝试接触神经网络的知识,就想轻碰这个坑,拿它预测个波形就行了,也没想到日后会成为研究方向。

       正直同学们都很关注机器学习,无意间女票跟我提了coursera吴恩达的机器学习教程。我就注册了个号,跟着视频学习,在神经网络这块学的比较认真。同时,结合着李航的《统计学习方法》从理论上辅助理解。看完神经网络部分后,我没有往下看支持向量机的部分,就做了神经网络识别mnist的作业,并打算做fpga实现,因为实验室本来是以硬件为主,打算做个硬件加速实现神经网络。后来只做了最后的test部分,并发了篇水文。

       再到后来,王老师知道我在研究神经网络相关的东西,扔给我一本《深度学习方法及应用》。翻了一遍完全看不懂,发现坑很深。于是在网上找到了standford的ufldl教程,又开始学习和深度学习相关的知识,从softmax开始。在这个过程中,通过作业,基本了解了卷积神经网络的模型,还做了相关的调参实验。

       做了简单的调试实验后,模型只局限于4层,而且不好扩展。恰好是matlab的作业题,故搜到matlab的深度学习工具,deeplearningtool。把框架代码阅读了一遍,其中BP那部分至少读了n遍。那是个6层的神经网络,一个输入,两组conv-pool,一层softmax。又做了若干调参实验。后来又自行添加了较复杂的结构,加了全连接层,relu,maxpool,dropout,dropconnect等,还自己做了数据集加预处理,又做了大量的实验。虽然自己的代码很不成熟,速度也很慢,经历过一个下午跑一个结果,但不可否认的是,这段时间积累了很多调参的经验,而且很多是只能意会不能言传的那种。

       暑假开学后,离开题又近了一步,这会基本确认研究这个方向了。花了近一个月完成了第一个框架配置。其实严格来说是第二次,因为第一次实际上是拿实验中心的服务器搭了Caffe,因为是linux的,很好配。实验室无奈规定不能上网,一台7000+的机器感觉好浪费。无奈只能找不需要联网配置的框架。

       最早找到了Caffe,而且刚好又windows版本,加上VS2013,依赖的下载需要Nuget包,只能下载离线包安装。最终都全了,编译却报错,百度也无果。有个知乎问了一样的问题,表示关注,却无人解答,至今未解。无奈只能另寻框架,因为时间不多了。

       找到了MatConvNet,这个也是配置配的心力憔悴。由于框架中涉及与C的混合编程,需要VC++库。也是离线安装,编译说找不到VC++库和SDK。但我明明装了VS2013呀,我的matlab最初是2015b的。百度了很多,各种方法都试了,各种版本排列组合都装过。更甚的,怀疑VS和matlab的安装顺序以及是否必须默认安装在c盘,卸载不干净。重装了系统一次。先装vs再装matlab,默认vs装c盘,还是不行。其实不配好也无所谓,只需要在cpu模式即可。但是很想体验一下gpu跑的有多快,逼着自己一定要配出来。最后,偶然发现移动硬盘里有个vs2010的安装包,试试2010?结果这回matlab说能找到VC++库了,你妹!早知道就装vs2010了,鬼知道版本互相怎么兼容的呢。找到库后,编译还有其它报错,幸运找到了一篇博客解决了报错问题,最后配置成功并在gpu上跑了,那个激动啊!

       失望的是,实验室买的机子gpu太弱了,就快了一点点。但好歹,整个配置过程已经记住了。后来,读了MatConvNet框架代码,了解了框架运行机理,并自己做了mstar的数据集进去跑,得到了初步的结果。后来又经历了各种调试trick,读论文,调试,改进,先在有个比较好的结果。

       这回就到开题的事后了,回想起来,这半年,尤其最近两个月真是不容易,这么大的坑,在没人带领自己摸索的前提下走来过来,也赢得了同学和老师的认可,自尊心得到了满足。

       目前还有几大困扰:

1、 关于预处理的重要性

2、 网络的改进基于什么原则

3、 Gpu太弱,想换

4、 振荡期比收敛期结果好,怎么确定结果

5、 不同框架跑的结果是否一样

希望下次写的时候,我又向前迈进了一大步。

猜你喜欢

转载自blog.csdn.net/hunterlew/article/details/52825218
今日推荐