机器学习从理论到工程的第二步-开发环境与工具篇

在《第一步-编程语言篇》中,小夕为大家较为详细的介绍了做机器学习(及其相关应用方向)的编程语言的选择问题,这一篇便是小夕为大家推荐的各个编程语言的开发环境/工具。

习惯性扫盲开篇。鉴于可能有部分同学的软件开发经验稍有欠缺,因此首先讲讲基本概念。

 

代码编辑器:

代码编辑器就是写代码的地方啦,其实任何文本编辑器都可以作为代码编辑器,毕竟源代码是写成纯文本的形式的。

 

但是效果往往就是像上图一样简陋而低效。由于写代码涉及到代码自动补全、语法关键字高亮、智能缩进等高效排版和代码检查的需求,因此像windows下自带的文本文档这种编辑器是不适合直接拿来用的。

 

除了上面这类众所周知的图形化模式下的系统自带的文本编辑器,还有命令行模式下的编辑器,比如众所周知的vim编辑器。

 

对于资深程序员/喵来说,vim完全可以被DIY成写代码神器,但是对于初学者,小夕强烈不建议基于这类编辑器去DIY,很费时费力,而且除了可以装X以外,对机器学习算法和工程的研发几乎没有实质性的帮助。而且实践证明,哪怕DIY的一身神装,还是不如下面小夕会推荐的代码编辑器强大。

 

一般意义上的代码编辑器的话,大家也应该比较熟悉啦。比如各种IDE中内嵌的,比如上个世纪的产物VC6.0、windows下的VS、mac下的xcode、跨平台的Eclipse、Qt等IDE中内嵌的文本编辑器也是非常强大的,除此之外,Sublime等非IDE内嵌的代码编辑器也是各具特色,在性能上甚至远超过IDE内嵌的编辑器。

  

编译器:

很多初学者认为,他们在用的VC6.0,VS就是编译器,这就比较尴尬了。其实编译器的功能很直接,就是将上面用纯文本写成的源代码按照它会的编程语言的语法规则编译成可执行文件。

生成的可执行文件可以运行在你的操作系统里,比如windows下的exe文件,也可以运行在某语言的虚拟机里,比如运行在Java虚拟机JRE下的class文件。

 

比如我们写了这么一段(C语言)源代码。文件名叫hello.c。

  

然后我们仅仅是调用编译器编译它一下。(在命令行里直接调用C语言的经典编译器——GCC。如下图:

 

 

即,调用gcc编译器,编译hello.c,目标文件名叫“hello”。

 

然后编译完成,我们通过这个命令看一下文件夹下的文件及其权限等信息:

 

发现文件夹下生成了hello这个文件,顺便看一下文件权限(第一列)。

 

 

发现生成的hello的文件权限里有x,而x就代表着可执行。运行一下,就可以看到printf出的信息啦:

就酱,这就是编译器的使命。

 

调试器:

但是,实际开发过程中,经常有编译错误或者运行时的错误,因此我们需要通过打断点(break point)来暂停程序运行,实时查看运行时代码中变量的值等,来帮助我们调试代码,找到错误。

 

初学者完成这个过程往往是在vc6.0、VS等IDE中,以为这是IDE的专利。实际上这个也是跟编译器一样,是可以独立运行的一个程序。有兴趣的同学可以在命令行试一下用GDB来调试代码,小夕就不演示啦。

 

集成开发环境:

集成开发环境(IDE)就是集成了一系列开发工具的环境,比如上面的文本编辑器、xx语言编译器、调试器等,往往还会包含开发环境(environments)管理、项目管理(projects)等功能。诶?那么开发环境和项目管理有什么区别和意义呢?

 

开发环境:

其实,开发环境就可以看成一个虚拟机!凡是在这个虚拟机里进行研发的项目,都可以自由使用这个虚拟机里的资源。这里的资源就是指各种库/包。诶诶?弄这么一个虚拟机有什么用呢?我从来没有感受过它的存在呀~

 

所以说呀,在埋头苦推数学公式的时候,不要忘了编程经验的积累哦~想象一下,平常你都是用最新版TensorFlow(比如1.x版本)+最新版python(比如3.x版本)去验证你刚开脑洞想出的算法,然后有一天,你突然发现这个算法别人已经实现过了,挂在了github上。然后呢,你就想直接跑人家写好的代码看计算结果。

 

但是,不幸的是,他的代码是用旧版TensorFlow实现的,比如0.5.0的版本!python也是旧版的python2!而你电脑上一直用的是1.x的版本tf和3.x版本的python!而旧版跟新版的API风格差别很大,移植会特别费时间!那怎么办呢?把自己电脑上的TensorFlow和python卸掉吗?

 

当然这时就是开发环境发挥作用的时候啦~我们只需要新建一个开发环境(虚拟机),在这个虚拟机里,下载好旧版tensorflow等,这样既能进入到这个虚拟机里直接跑人家的代码,又可以关掉这个虚拟机,返回到你默认的环境里,去继续用你的最新版python和TensorFlow啦~

项目管理(project): 

项目管理,其实就跟操作系统里的文件系统是一样的原理。

我们在做机器学习项目时,往往有不同源的数据集,因此需要一个Dataset文件夹里面放着各种数据集;然后需要由我们项目的核心代码,因此需要一个Source文件夹;然后有时用到一些冷门的第三方库,为了避免与我们的代码混淆,于是将它们放到Library文件夹;然后训练模型的过程中,比如训练一个深度神经网络,那么我们需要隔一段时间保存一下模型的训练结果呀,所以又需要额外的文件夹保存模型的参数日志等~更不用说测试的过程啦。

所以,将上面这些琐碎的目录纳入到一个框架下,那就是project了。至此有没有懂project和environment的区别呢?所以,我们同一个project完全可以放到不同的environment里去运行,只要这个environment有这个project所需要的资源(版本符合要求的库);而一个environment也当然可以用在多个project啦。

脚本语言与解释器:

还有一些现代编程语言,不需要被编译器编译成可执行文件后才能运行,这一类语言被称为脚本语言,比如python、matlab。

 

不需要编译就能直接运行有什么好处呢?那就是可以用一个称为“解释器”的程序来实时的解释你敲入的每一句话,比如在python解释器中,

 

单纯的解释器好像看起来并没什么卵用,只能当做玩具写写hello Xi Xiaoyao这种代码。但是在后面的讲解中,小夕将给大家看到它的强大应用——单元测试。

好啦,概念扫盲完成了~下面就开始正文了——工具推荐!

 

诶诶?快2000字了?那还是敬请期待《机器学习从理论到工程的第二步——开发环境与工具(下)》啦( ̄∇ ̄)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

干了一年“元宇宙”,Meta亏了300亿美金

来源:青投创新编辑:Leon"Facebook更名成Mate:从社交媒体转型为“元宇宙”,但前景并不乐观。一年前,Meta在元宇宙上高歌猛进。该公司刚刚完成了从Facebook到Meta的品牌重塑。正如马克扎克伯格(Mark Zuc…

机器学习从理论到工程的第二步-开发环境与工具篇(下)

好啦~继续昨天的《第二步——开发环境与工具篇(上)》~其实有点尴尬啦,本来想一篇讲完的,结果小夕太啰嗦了,还没有开始讲正文,就写了快2000字了。。。所以说,这一篇是上一篇的正文。。。matlab就…

阿里-2019算法岗笔试编程题-kmp匹配

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/82503724 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_…

IBM量子处理器,将突破1000位

来源&#xff1a;半导体行业观察IBM的CONDOR是世界上第一台拥有超过1000个量子比特的通用量子计算机&#xff0c;它将于2023年首次亮相。预计这一年IBM还将推出Heron&#xff0c;这是该公司表示可能对其有所帮助的新型模块化量子处理器群中的第一个到2025年生产出超过4000个量子…

ChatGPT到底有多聪明?我测试了ChatGPT的数学能力

来源&#xff1a;AI前线译者&#xff1a;马可薇 人人都听说过最新&#xff0c;也是最复杂的聊天机器人 chatGPT。而众所周知&#xff0c;它在英文文学等“软话题”方面甚是熟练&#xff0c;所以我决定测试它在数学这类“硬话题”方面的表现。你可能不知道&#xff0c;但我是有…

从朴素贝叶斯到贝叶斯网

回顾在文章《朴素贝叶斯》中&#xff0c;小夕为大家介绍了朴素贝叶斯模型的基本知识&#xff0c;并且得出了朴素贝叶斯是利用联合概率P(x1,x2,x3...xn,y)来确定某个样本为某个类别的概率&#xff0c;进而利用最大后验概率&#xff08;MAP&#xff09;来决策类别。也就是说&…

2022年,谁在数学史上永远留下了姓名

来源&#xff1a;新智元这一年&#xff0c;数学领域有什么大事&#xff1f;Quanta Magazine做了一份全年总结。我们可以把数学家想象成考古学家——他们煞费苦心地拂去世界隐藏结构上的灰尘。起来很吸引人&#xff1f;“你的起点并不重要&#xff0c;但要眼光长远&#xff0c;了…

神经网络激活函数=生物转换器?

啊~昨晚躺了一个小时竟然没有睡着&#xff0c;美容觉泡汤了...于是竟然大半夜起来写了这篇文章在《逻辑回归到神经网络》中&#xff0c;小夕让神经网络冒了个泡。在《一般化机器学习与神经网络》中&#xff0c;将神经网络这一火热的模型强制按回机器学习一般框架里。在《BP算法…

从Encoder到Decoder实现Seq2Seq模型

首发于机器不学习关注专栏写文章从Encoder到Decoder实现Seq2Seq模型天雨粟模型师傅 / 果粉​关注他300 人赞同了该文章更新&#xff1a;感谢Gang He指出的代码错误。get_batches函数中第15行与第19行&#xff0c;代码已经重新修改&#xff0c;GitHub已更新。前言好久没有更新专…

市场增速超20%,国产操作系统“浴火重生” | 解读操作系统的 2022

作者 | 凌敏 本文是“2022 InfoQ 年度技术盘点与展望”系列文章之一&#xff0c;由 InfoQ 编辑部制作呈现&#xff0c;重点聚焦操作系统领域在 2022 年的重要进展、动态&#xff0c;希望能帮助你准确把握 2022 年操作系统领域的核心发展脉络&#xff0c;在行业内始终保持足够的…

线性代数应该这样讲(二)

在《...&#xff08;一&#xff09;》中&#xff0c;小夕从映射的角度讲解了矩阵及矩阵运算&#xff0c;这也是机器学习中看待矩阵的非常重要的视角。另一方面说&#xff0c;矩阵当然也是用于存储数据的数据结构&#xff0c;这也是最好理解的形式。另外还可以看做是一个线性方程…

2023将至,Bengio等大佬年度展望!懂理性的AI模型要来了?

来源&#xff1a;新智元【导读】2022年对AI来说注定是不平凡的一年&#xff0c;这不吴恩达、Bengio等一众圈内大佬在接受DeepLearning.ai的采访中都展望了2023年AI的发展趋势&#xff0c;还分享了自己的科研小故事。还有1天&#xff0c;2022年就要过去了。此前我们报道了吴恩达…

【NLP】Attention Model(注意力模型)学习总结

【NLP】Attention Model&#xff08;注意力模型&#xff09;学习总结郭耀华发表于郭耀华‘s Blog订阅294在这篇文章中&#xff1a;1. 什么是Attention机制&#xff1f;2. 先了解编码-解码框架&#xff1a;Encoder-Decoder框架3. Attention Model4. Attention机制的本质思想5. S…

杂谈机器学习的几个应用场景

在上一篇文章末尾&#xff0c;小夕提到了“机器学习是实现自然语言处理的正确道路”。其实确实如此&#xff0c;纵观整个自然语言处理的发展史&#xff0c;也是纵观整个人工智能的发展史&#xff0c;从诞生到现在&#xff0c;机器学习不仅是在理论和工程上实现自然语言处理的目…

2022年度十大AI技术盘点:AIGC风暴来袭,自动驾驶后会无期?

来源&#xff1a;AI科技大本营翻译 & 整理&#xff1a;杨阳“科学不能告诉我们应该做什么&#xff0c;只能告诉我们能做什么。”——让-保罗萨特《存在与虚无》这一年&#xff0c;AI又有哪些前沿技术突破呢&#xff1f;通过汇总梳理2022年10大AI技术&#xff0c;AI科技大本…

从逻辑回归到受限玻尔兹曼机

在那很久很久以前&#xff0c;可爱的小夕写了一篇将逻辑回归小题大做的文章&#xff0c;然后在另一篇文章中阐述了逻辑回归的本质&#xff0c;并且推广出了softmax函数。从那之后&#xff0c;小夕又在一篇文章中阐述了逻辑回归与朴素贝叶斯的恩仇录&#xff0c;这两大祖先级人物…

Peacock:大规模主题模型及其在腾讯业务中的应用-2015

Peacock&#xff1a;大规模主题模型及其在腾讯业务中的应用 作者&#xff1a;赵学敏 王莉峰 王流斌 孙振龙 严浩 靳志辉 王益 摘要 如果用户最近搜索了“红酒木瓜汤”&#xff0c;那么应该展示什么样的广告呢&#xff1f;从字面上理解&#xff0c;可能应该返回酒水或者水果类广…

史上最简单的玻尔兹曼机模型讲解

在上一篇文章中&#xff0c;小夕讲述了逻辑回归为了抗衡贝叶斯网&#xff0c;也开始了自己的进化。然而令我们没有想到的是&#xff0c;逻辑回归最终竟然进化成了一个生成式模型——受限玻尔兹曼机&#xff08;RBM&#xff09;&#xff0c;也就是变成了敌方&#xff08;生成式模…

从头到尾彻底理解KMP(2014年8月22日版)

从头到尾彻底理解KMP 作者&#xff1a;July 时间&#xff1a;最初写于2011年12月&#xff0c;2014年7月21日晚10点 全部删除重写成此文&#xff0c;随后的半个多月不断反复改进。后收录于新书《编程之法&#xff1a;面试和算法心得》第4.4节中。 1. 引言 本KMP原文最初写于2年多…

解开玻尔兹曼机的封印会发生什么?

在上一篇文章中&#xff0c;小夕讲述了逻辑回归为了抗衡贝叶斯网&#xff0c;也开始了自己的进化。然而令我们没有想到的是&#xff0c;逻辑回归最终竟然进化成了一个生成式模型——受限玻尔兹曼机&#xff08;RBM&#xff09;&#xff0c;也就是变成了敌方&#xff08;生成式模…