乐趣区

关于深度学习:深度学习研究生第一年之际前来谈谈自己的感受

前言

在行将完结研究生第一年之际,前来谈谈本人的感触。

你能够把这篇文章当做深度学习者、程序员、研究生的简短自白。可能会有点啰嗦,会有点无趣。但如果有工夫、感兴趣,无妨浏览浏览,或者你能从其中挑出点有用的货色来呢。

谈到的话题:

  • 编程语言抉择
  • 该怎么筹备去找工作
  • 上不上博

杂谈

人不知; 鬼不觉入行深度学习行将快一年,尽管说入行之前所做的我的项目,所编写的代码和当初做的并没有什么间接关系。然而从本人的上手水平和过去的教训来说,好的根底还是很重要的。

对于深度学习的根底,大体分为三个局部:

  • 理论知识根底(数学知识的把握水平)
  • 编程根底(C/C++/python)
  • 实际根底(配置环境,debug,遇到问题寻找答案)

因为之前大部分的工作是在电赛,次要应用的语言是 C。也加入过 ACM,应用 C ++ 来编写算法。得益于这些实际,本人的 C /C++ 编程功底是有一些的,因而上手 python 很快,也理解了些 python 的底层常识(举荐一本 <Python 源码分析 >)。

Python 语言很富丽很美好很高级。C 语言 100 行做的事件 Python 可能 2 行就做到了,然而啊,你不晓得 Python 的 2 行代码中其实也执行了 C 语言,如果你应用的是 C 实现的 Python,在 Python 内核中,理论调用的还是 C 语言,只是你看不到摸不着罢了。

深度学习的入门门槛尽管,然而略微努致力,过了这扇门,当前的路就好走多了:一篇文章解决机器学习,深度学习入门纳闷。

大部分编程语言都是共通的,熟练掌握其中一门,其余语言也就好动手了。

编程语言接触的越多就会越明确这个情理,不论是动静语言、动态语言还是解释型语言、编译型语言,大体都是互通的。都有近似对立的数据类型,都有近似对立的流程构造,很多关键字也是一样的,

本科的时候咱们第一个学习的编程语言应该是 C 语言。过后一人一本红皮谭浩强,且不说对这本书的评估,也是起码引领咱们步入了编程的大门。瞎话瞎话学好 C 语言受害无穷。到现在,C 语言的 C99 规范还是判若两人地稳固,C 语言依然无处不在。

每种编程语言都有归宿

自从升入研究生以来,写 C 语言的机会变少了,大部分工夫只是在看。面对着本人已经很相熟很相熟的语言,像是生疏了很多,放心本人这样会“忘掉”它,于是想着去用用啊,去轻易写点货色啊,强行去操作啊。

但还是发现,C 语言不适宜我过后的我的项目,强行往上凑是不行的。就和我曾自觉置信 python 是世界上最好用的语言一样 (2333, 不是 php)。曾一度认为 python 什么也能够做,然而疏忽了重要的一点, 编程语言设计的初衷。

翻了翻 C 语言的历史。C 语言的设计指标是提供一种能以繁难的形式编译、解决低级存储器、产生大量的机器码以及不须要任何运行环境反对便能运行的编程语言。次要是用于底层开发的 。而 Python 呢,Python 的设计者 Guido van Rossum 是依据 ABC 语言开发进去的, 而这门语言的初衷是为了服务那些非程序员们。怪不得 Python 语言长得那么像伪代码。

所以啊,面对不同的我的项目,挑一门不同的编程语言吧,比方我来说:

  • Python:次要用来编写深度学习代码,利用 Tensorflow 和 Pytorch 库来实现本人的想法,当然 Python 还能够做别的,也用 Python 搭建过网站的后盾(Django)。
  • C/C++:本人对 C 语言更相熟一些吧,因为 C 语言很纯正很洁净,没有间接的类性能的反对尽管是硬伤,然而其底层性的特点还是无可比拟的,C 语言更多的是在写瓶颈算法代码。而 C ++ 对我来说略微臃肿一些,规范更新太快,不过毕竟和 C 有亲戚关系,厚此薄彼了。
  • JavaScript:又是一门脚本语言,然而在我看来 JS 也开始面向大工程来倒退了,各种规范也是层出不穷,每年一个草案,模块与模块间的相互调用也越来越谨严了。这门我个别拿来在浏览器上游玩,制作一些本人的小工具之类的。

还有一些语言,还接触过 luaphp,亦或是 C#lua 是为了疾速入门 torch,php是为了搭建这个 wordpress 做后端的博客。C#是为了应用 VS 做一个 WPF 上位机。lua玲珑弱小和 C 语言很亲热,PHP 本人并不是很喜爱,看了纯正为了 WordPress,C#看了有小半年,各方面也挺好用,不过须要充沛了解所有皆对象的概念。

人的精力有限,把握一门编程语言还是很难的。所以很艳羡那些会多国语言的人,既然人家都能学那么好,那么咱们怎么就不能把握多门编程语言呢?

还是多学一些语言吧

很多人说精通一门语言比学会多种语言有用,这句话说得在理,然而我在理论的我的项目中更多的是多种编程语言齐驱并驾的,一种语言吃到死的我的项目还是比拟少的。

为什么,其实工作中更多遇到的是穿插编译,凡是波及到我的项目,光应用一门语言个别是行不通的。大多数都须要联合不同语言的专长来进行。把本人的技能树点满,遇到不同的怪物也就熟能生巧了。

在利用 Pytorch 这个深度学习框架在搭建一些深度学习算法的时候,咱们利用 pyyhon 来写外围程序,然而如果遇到瓶颈,一些算法速度要求只用 python 写满足不了这时候就须要 C /C++ 了。另外学习学习 cuda 也是必要的。

但有一门语言是必学的。

明天,IEEE Spectrum 公布了第五届顶级编程语言交互排行榜:Python 卫冕胜利,C++ 异军突起,雄踞第二,C 语言和 Java 则「退位让贤」,分据第三和第四。

能够这么说,Python不论在求职、开源我的项目、自定义我的项目都占据第一的地位能够说很强势了,Python 的劣势不用多说,学好 Python 好好搞事才是硬道理。

总结下,倡议学习的的语言:C/C++、Python 以及 JS

好习惯

我这里要说的好习惯不是指早睡早起,这个睡觉的习惯,我不做过多的评估,每个人有每个人的习惯。而且本人也是反例,平时都是一点多睡,早上 8 点左右起,这样着实不好,大家别学我。

我要说的,是编写代码过程中,能做的查看尽量都做了,别嫌麻烦,该应用 assert 就别嫌影响代码好看,正文最好都写上,该有的 loglog了,该 gitgit,要不然到时候调试起来真的很影响效率。

自己深深受了这个的苦啊。

应不应该上博

这个应该是陈词滥调的问题了,曾有一老友专门过去劝我读博,通宵畅谈,过后差点就被感动了 … 读博这个真的须要思考分明,我身边有很多转博的人,无非就是两种:

  • 老师劝直博,许可必定能毕业,因为业余偏实践,而后本人感觉研究生进去也不晓得做什么,索性再读几年。
  • 本人有想法,想搞钻研,感觉研究生三年工夫不够用,须要博士的工夫持续搞。

的确,如果本人想要钻研的货色发现一两年基本出不来后果,何不尝试一下博士呢?

因为一旦你工作了,你想要做的,其实和老板让你做的,差距还是挺大的。

上不上博不是本人一个人的事儿,问问家人,问问女朋友,看看他们是否反对你,而后最终当然看本人的抉择了。

我的项目?工作?

如果始终以钻研的心态去找工作,去做我的项目,那么我想说:你想的和人家要的,那能够天壤之差。

之前有一个我的项目,我想要用 Python 来写,用 GPU 来跑,想多了啊,人家要求用 C++ 来写,用 CPU 来跑,你认为谁都有 GPU 呢,我的项目谈的更是理论,理论落位才是硬道理,因为应用你产品的人,不肯定都有 GPU。

如果二心科研,那么我的项目将会是一个齐全不同的天地,两者差异还是很大的,各有各有短处短处,有人说实践很难,也有人说理论我的项目很难,这个真的不好说,只有实践和理论相结合,才是最好的吧。

找工作来说,算法畛域,C++/ C 语言依然是万金油,不能漠视哇。

后记

简略谈谈本人的感触,心愿对大家有帮忙。

好几天没写博客,发现一个情理:

对于大多数有需要的程序员来说,浏览博客是一件很爽的体验。

尤其是在看满满常识干货的时候,那陈腐的代码和公式啊,赤裸裸地铺满在博主参差有条理的页面上,那一张张配图是如许地迷人。尽管巴不得连忙把这些内容涤荡下来,鼠标滚轮上的中指就要按奈不住往下滑——等等!先珍藏了。

然而写博客就稍稍麻烦了,想吐槽的常识太多,奈何工夫又不够,只能慢慢来啊 … 总得须要酝酿是吧?

贵在保持吧~

撩我吧

  • 如果你与我气味相投于此,老潘很违心与你交换;
  • 如果你喜爱老潘的内容,欢送关注和反对。
  • 如果你喜爱我的文章,心愿点赞???? 珍藏 ???? 评论 ???? 三连一下~

想晓得老潘是如何学习踩坑的,想与我交换问题~ 请关注公众号「oldpan 博客」。
老潘也会整顿一些本人的私藏,心愿能帮忙到大家,点击神秘传送门获取。

退出移动版