DeepLearning项目之旅-Start

作者: SherlockLiao | 来源:发表于2017-04-23 21:30 被阅读119次

    背景介绍

    现在在学校做的事情一直跟deep learning有着关系,也非常庆幸自己可以能够做着自己感兴趣的事情。从去年4月份开始,作为一个即将从数学系毕业的本科生,由于自己的方向也不是统计,做着和machine learning、deep learning完全无关的事情,但是一直对deep learning略有耳闻,对人工智能也有着深深的兴趣,特别是在Alpha Go大战李世石取得大胜之后,更是对人工智能充满了敬畏,本来认为这些都是那些计算机天才,黑客才能做的事情,也很遗憾自己没能选择这一专业,不能投身与这场巨大的变革,也不能参与到人类的又一次浪潮,遂转身继续开始看数学专业书。

    然后一切却又是那么奇妙,感谢我们现在身在这样一个互联网发达的时代,也感谢各大名校教育家们的无私奉献,将他们的课程都晒到了网上,使得我们能够这么轻易的接触到世界上顶级名校的各种课程。一切的起源都来自于一个mooc网站,coursera。无意中知道了coursera,开始浏览里面的课程,同事也了解到了coursera的兄弟网站,edx。于是在感慨如此多可以学的知识的同时,开始投身在mooc的海洋当中,开始在coursera上学课程,非常欣喜的发现了华盛顿大学开的一个机器学习系列课程(没错,我在coursera上学的第一门竟然不是鼎鼎大名的Andrew ng的machine learning课程),从这么课中,我了解到了一个我现在都觉得无比优雅的语言,python。

    大家肯定都对大一进校开始学习的c语言还历历在目,同时可能感到阵阵恶心。我也是这样,进入大学就开始学习繁琐的c语言,并没有机会感受到编程的美的时候,就开始迷失在了c语言繁琐的语法中,从而导致了我长时间对编程有着抵触心理。因为一个好朋友对我的开导,才使得我重新对编程有了一点兴趣,但是对c语言也是很抵触的,后面我开始学着数学系学生该学的mathematics和matlab,感受到了一点点编程的乐趣,这都是后话了。

    继续把目光集中到去年4月份,这个时候我对python还是抱有抵触的心理,抱着试一试的心态,我了解了一下python,发现这个语言既有着编程语言该有的特性,也有着科学计算语言的方便,于是开始投身于这门语言的学习,从edx中的mit开设的Introduction to Computer Science and Programming Using Python。很感谢这门课,由浅入深的带我进入了编程领域,让我对编程重拾信心,这也使得我得意进入machine learning这个领域。

    接着我在一边做着毕业设计,一遍开始在coursera上学习machine learning,同时还了解了大量新鲜的事物,比如markdown(就是我现在正在写的),github,jupyter notebook等。我开始对这个领域感兴趣,并且感觉这个领域的一些东西也需要一些数学基础,接着我遍开始投身于在网上学这些课程,直到后面我开始去一些名校的网站上面看这些教授的课程和handout。

    正在我学得起劲的时候,又有一个网站进入了我的视线,udacity。这个网站4月份才开始创办进入中国,并且提供免费学习纳米学位。学习过程中是通过完成一个又一个项目来完成的,在学习这个的过程中,我感受到了深深的成就感,慢慢对机器学习越来越感兴趣。这个学位是收费的,一个月1000吧,有点贵,而且现在还开通了各种新的课程,比如无人驾驶汽车,人工智能等,按学期收费,每个学期5000多,比我的大学学费还贵,有没有。因为这是美国的网站,所以是按美元来收费的,当然是很贵。我们也可以钻空子,去github上搜索udacity,就可以免费下载他的所有项目,但是这样就无法使用udacity独特的review服务,就是你把你写的项目代码提交上去,会有专门的评审来审核你的代码,并且给你提供修改方案。

    现在我仍然在网上学习着一些新鲜的课程,而且现在很多大学已经将课程放在了网络上,同时github上也有着越来越多优秀的深度学习项目,所以只要想学就可以在网上找到无数的资源。

    经过

    转眼我到了研一开学,本以为我要开始学习数学课程,所以我想同时继续在网上开始学习机器学习。但是机遇就是这么突然,我突然发现在数学系下面居然有做应用的老师现在开始涉足深度学习这个领域。所以我毅然决定去投靠这个导师。也很庆幸我能够成为他的弟子,开始了我的深度学习之旅。同时开始了解到了大量的cnn,rnn,以及一些框架的知识。我终于可以开始学习自己感兴趣的东西了,虽然感觉每天都充满着挑战,但是也感觉自己充满了干劲。

    这个时候,我发现了知识的薄弱,我开始上cs231n的课程,stanford的计算机视觉大牛李飞飞开的课程,深入浅出的讲解了cnn网络,让我深刻的了解到了卷积神经网络,具体的可以看我之前写的文章。

    刚开始我使用tensorflow,毕竟google是业界大拿,然后发现tensorflow用着有点臃肿,于是在社区上找到了keras,一个第三方插件,以tensorflow作为backend,使用起来非常简单,现在google已经将keras作为了官方的插件,具体的keras内容也可以看我之前的文章。

    接着我发现了pytorch,torch的python版本,我重新找打了当初写python那种简洁与美感,于是不管不顾,也不管它是否才发行一两个月,果断开始学pytorch,花了60分钟就感觉基本入门了,实在是比tensorflow简单太多。如果你既想使用底层框架,不想使用第三方封装的插件,因为这样会妨碍你实现一些自己想实现的功能,同时你对内部的不可控不能接受的话,可以试试pytorch,既比tensorflow简洁,同时又是一个第三方的底层框架,能够让你对内部完全把控。具体pytorch的内容也可以看我之前的文章。

    就在这个时候,我开始了学校的一个新项目,我这才发现我这个半路出家的deep learner的代码能力实在是有着太多的短板了。看着一篇论文在github上的开源代码实现,我基本照搬过来实现我的项目就看得我头大,我觉得我在工程实现能力上有着太多的缺陷。所以我决定开始这个系列,手撸神经网络,并且每周用pytorch实现一些小项目,分享出来,提高我的代码能力。我的基本想法是先看一遍项目的代码实现,然后自己背着再实现一遍,哪里遇到了障碍就回头去看看源码是怎么写的,让自己的代码能力越来越高。

    结语

    希望通过我每周的一个小项目,我能够快速的提高我的工程能力,如果各位有兴趣也可以照着我这个方法去试试,可以自己去github上找一些高质量的项目,代码就是要多写才会写得越来越好,就是要模仿那些大牛写的代码我们的代码能力才能够不断地提高,与大家共勉,希望大家都能够成为牛逼的工程师,程序员,进入心仪的公司,能够完成自己的梦想,能够在这个历史的变革成为一个有影响力的人。


    如想了解更多文章,欢迎访问我的博客,很多干货
    欢迎访问的我的github主页

    相关文章

      网友评论

        本文标题:DeepLearning项目之旅-Start

        本文链接:https://www.haomeiwen.com/subject/ezoyzttx.html