计算机系统应用教程网站

网站首页 > 技术文章 正文

我是如何从动力机械专业转行到算法工程师,完成薪资翻倍!

btikc 2024-10-12 11:22:15 技术文章 2 ℃ 0 评论

背景

2018年研究生毕业,动力机械专业,研究方向是燃气轮机方向,以仿真为主,吃饭的家伙是CFX、NUMECA、fluent和MATLAB等一系列与仿真相关的软件。我学的很好,无论是学习成绩还是仿真实验,都做得很好,拿了很多奖。但是到找工作的时候发现,学的好不如专业好,计院学生的薪酬待遇远超我们。工作时没有选择去研究所,去了某知名手机公司,做一名管培生,这一年对我影响很大!工作中,转行的念头愈发强烈,作为一名工科生,总有一种丢掉技术就会丢命的错觉,诚惶诚恐,再加上薪酬的差距,坚定了转行的意愿!下面直接进入正题,我是如何从一名动力机械的学生转行到算法工程师,完成薪资翻倍的!



编程语言

想要转行计算机,首先得选一门合适的编程语言,钻进去,吃透它,这是前提条件!千万不要高开低走,从入门到放弃,最后潦草收场,这样的案例不在少数。


推荐Python入门!对于初学者而言, Python很友好,比较简单。网上的教程和书籍也很多,但我不推荐一开始就抱一本很厚的书啃,很容易放弃,每天面对那么厚一本书,学了后面忘了前面,书的页数也不见少。不是意志坚定的人很难坚持下来。



推荐《Learn Python the Hard Way》入门,中文名叫《笨方法学Python》,很简单,也没那么厚,以上手操作为主,所谓的"笨方法",就是不断练习,不断敲代码,很简单的代码也会重复的让你敲,直到你学会为止,当你把那本书里的代码全部敲一遍,代码行数至少上万,还是很有成就感的!


仅依靠那本书是远远不够的,还需要一本系统的Python书籍,供平时翻阅和学习。CSDN上有很多Python的内容,但我觉得一开始去CSDN上找代码不是很好的习惯,上面的内容参差不齐,相关内容也很多,不知道用那个,大多数人都是收藏不看系列,白白浪费时间。所以推荐找一本系统的书放在手边,偶尔翻阅,既可以巩固知识,又可以写出规范的代码。


有了上述的编程语言做基础,就可以尝试做一些小项目,推荐选数据处理和可视化这部分,看得见摸得着,做出好看的东西很有成就感。

理论知识

掌握一门编程语言后,算是正式入门了,但是真正学习的东西才刚开始。


想要成为一名算法工程师(注:这里指的是AI算法),还需要有很强的理论基础。有很多人觉得理论不重要,网上随处可见"xxx速成班",我相信速成班也不会教很多理论的知识,大多数以应用为主,以项目上手。但我不这样认为,不然高校完全没必要开那么多理论课,直接让学生做项目,肯定比速成班的学生学的快,学的好。在我看来,学会如何用一个算法重要,如何去"调包"、如何改参数重要,但是知道算法的基本原理更重要,它是这个算法的基石,只知道用它而不知道它的原理时,很不稳妥,出了问题也不知道如何修正。



以深度学习这个方向为例,基础的数理知识这里不再赘述,是必备的素质,如果连矩阵运算这些基础知识都搞不清楚,建议回去先补一下微积分、线代和概率论。这里比较推荐李航老师的《统计学习方法》和吴军的《数学之美》这两本书入门,《统计学习方法》这本书不用多说,深入浅出的讲解了机器学习中常用的朴素贝叶斯、逻辑回归、支持向量机等算法,推荐搭配B站的《机器学习-白板推导系列》一起食用,效果更佳,建议里面的算法自己都能推导一遍,真的很有用(后续会将我的笔记分享给大家);《数学之美》这本书大白话讲了很多数学原理,理解起来难度不大,是Google官方连载的博客,深受IT人员的喜爱。


实践的话建议搭配《机器学习实战:基于Scikit-Learn和TensorFlow》这本书,前半部分包括了机器学习里常用的算法,基于Scikit-Learn框架实现的,后半部分包括深度学习常用的卷积算法、数字识别等示例,基于TensorFlow框架实现的,GitHub上也有配套的开源代码,很经典也很好用的一本书。


深度学习部分,英文版的建议吴恩达老师的课程,中文版的建议李宏毅老师的课程,B站上有现成的教学视频,BP算法、CNN、RNN、LSTM…都是从理论基础开始讲的,听完之后收获会很大;配套书建议花书或者瓜书,都很厚一本,放在手边没事翻翻,对于后续训练模型有很大作用。


项目经验

理论知识丰富后,项目经验必不可少,光说不练假把式!GitHub上有很多开源的代码,检测、分割、识别、超分…很多优秀的论文均开源了,你可以将他们的代码下载下来,再结合自己的标注数据,训练模型,调参、改模型、熟悉框架。至少要熟悉一个常用的深度学习框架,Pytorch、TensorFlow、Caffe、Keras等。



除了训练模型,对应的论文知识也需要掌握不能跑完fast-rcnn后,连anchor都不知道!这是肯定不行的;对于你想进入的领域,你需要知道主流的方法有哪些,面临的挑战有哪些,大概努力的方向有哪些等等。既要脚踏实地,也要仰望星空


关于面试

有了基本的编程能力,理论基础和项目经验,假设你真的稳稳当当的走下来,那么差不多就可以去找工作了。关于面试,也多是一些老生常谈的东西,非计算机科班出身,对于数据结构、算法及编译原理等等也不是很了解,这些知识也不是短期就可以掌握的。那么,对于面试最快速的方法就是刷题,LeetCode、牛客上有很多面试题可供参考,常用的几个算法要会手写,难度大的算法可以不会写,但是基本思路得知道;当然,这里有个捷径:如果上述你真的都不会,在面试的时候,你可以直接和面试官聊,说你没有准备这些,非科班出身,这些东西正在补齐,力气用在刀刃上,对于机器学习和深度学习相关知识掌握牢靠,这方面的项目经验也很足,然后将面试官引到你擅长的方面来。


数据结构、算法要不要学?

肯定是要的,目前每天下班都会看数据结构等相关的知识,B站上有浙江大学等很多高校的课程供选择,资源满满,这些都是你日后编程的基础,不能说它可以有直接的应用,但是它能影响我们的思维,潜移默化的优化我们的代码。


写在最后,关于心态

坚持和习惯是一件很恐怖的事情!时间很宝贵,与其用来刷剧、打王者,不如用来听网课,看一篇论文,读优秀的代码!刚开始的时候,会彷徨,自信心受到打击,怀疑自己,甚至会觉得自己是个傻子,为什么要用这些东西折磨自己……但是随着时间的增加,不会的东西越来越少,会的东西越来越多,慢慢的自己可以搭建一个小的网络,anchor、anchor-free、6D pose等术语张口就来,各种网络的优缺点也都能说出一些,分分钟搭建模型训练环境,能够快速将自己的数据喂给网络,知道调哪些参数会使得网络的性能变好......


再回过头来看自己走来的一路,上面发着光!再看看新工作带来的收入,都是钱的味道,那感觉真爽!


无论你现在经历什么,不要轻言放弃,从来没有一种坚持会被辜负,生活不会一蹴而就,不会永远安稳,这个社会永远有人比你聪明还比你努力,相信我们都走在一条发光的路上,路的尽头,人民币在向我们招手!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表