学习TensorFlow的过程和经验总结
近⽇学习使⽤TensorFlow搭建神经⽹络建模终于取得了⼀些微⼩的成绩:
1、学会了使⽤Squential \ class 搭建神经⽹络模型
2、学会了使⽤compile来配置模型训练⽅法,如损失函数、优化器、准确性评价⽅法
3、学会了⼀些经典的神经⽹络模型的实现⽅法
4、学会了各优化器的作⽤和效果
5、学会了搭建神经⽹络进⾏训练和学习的整体框架和步骤
其实,我学习TensorFlow不⽌⼀两周了。我是从今年的2⽉份就开始学习了。当时报名了⼀个天池的算法⽐赛,需要使⽤CNN和RNN模型进⾏建模,所以从那时就开始了学习TensorFlow之路。虽然中间因为⼯作的原因断断续续,但是直到5⽉底,我对于TensorFlow的概念还是模糊的,⼀团浆糊,重点功能和模块说不清楚、抓不住。
但从6⽉中旬开始,渐渐到 感觉,⾛对了路⼦,⼀直到现在7⽉下旬了,总算是取得了⼀些⾃⼰认可的⼩成绩,学会了独⽴⽤TensorFlow进⾏建模⼯作。
我回顾整个学习TF的过程,总结了这中间发⽣的⼏个关键转折点:
1、对了教材
2、跟对了⽼师
3、成功安装TF2,成功配置IDEA开发环境解释器,成功进⼊开发环境
4、⾃⼰动⼿在IDEA中coding,熟练掌握建模的关键核⼼步骤
5、开始问问题,去读官⽅API⽂档寻答案
6、开始在脑海中将各分散凌乱的API组织成⼀张交互的知识⽹,对庞杂的官⽅API⽂档有了功能逻辑上的整体认识
正如我坚信的那句话,学习路上的每⼀步都不会浪费。每个当下看似零散⽆⽤的知识都会在将来某个时刻某个地⽅发挥其不可或缺的作⽤。学习TensorFlow的这⼀路⾛来,躺了⽆数的坑,历尽了困惑和不解,⽐我去年9⽉份开始学习Spark的时候难多了。但是也正是因为这样的⼀个曲折的过程,才让我发现和总结了⼀些宝贵的学习经验。
tensorflow版本选择接下来我们就开始细说下这段曲折的学习过程,已经在这个过程中的6个关键点都是如何发⽣的,⼜是如何拯救我于⽔⽕之中,最终成功将我送达彼岸的。
1、对教材
开始学习TensorFlow的时候,我跟⼤家⼀样⼀开始也是先去查看官⽅教程。但是真的是⽆⼒吐槽,官⽅教程完全让⼈摸不着头脑。我跟着官⽅教程学了2周多还未能有感觉,果断失去了耐⼼。这是我错的第⼀本教材。
之后我觉得要想系统的了解TF,了解它的运⾏原理和计算机制还是要有⼀本系统的教材才⾏。所以我⽹上搜了下相关教材,检索到的⾼频推荐的教材就是《TensorFlow实战-Google深度学习框架》。⼤约花了⼀周多的时间看完,还在2⽉17号的时候发了⼀篇学习笔记博⽂:
但是这是我错的第⼆本教材。因为这本书是基于TensorFlow1.X的,⽽现在已经21年了,TF都已经升级到了2.X。2.X⽐1.X有了很⼤的升级和改版,完全可以说是我想去学开飞机,结果跑去报了个汽车驾驶班。所以我在看这本教材的时候,⾮常⾮常的困惑,因为我⼏乎不可能⽤下载的TF2.X版本的代码做coding实验。试了⼏次不能debug后,我就完全放弃了看这本书⾥的代码,到后⾯就只看书中讲的案例实现过程和思路。
这样之后很长⼀段时间我停下来学TF了,因为⼊不了门,摸不着整体框架,不到感觉和兴奋点。但是转折点在3⽉中下旬来了。之前报名的天池算法⼤赛3⽉24是DDL。和我⼀起组队的⼩伙伴⼀个⼈承担了全部的⼯作,提交了代码进⼊了初赛。但是初赛只是拿到了⼊场券,要进⼊决赛还是需要进⼀步优化模型的。这时候同组的⼩伙伴让我来主导,他已经在初赛尽⼒了。
出于这样的压⼒和⾃我要求,我只能再次拾起TensorFlow ,再次进⼊学习和实践模式。⽽这次我知道⾃⼰要⽤的是CNN、RNN模型,想要的是快速落地和实践的代码。之前⽤的教材⼜都是失败的。恰好我想起了2020年年初的时候我让同学给我推荐过⼀本他学习深度学习⽤过的⽐较好的书。
没有想到的是,这本书本⾝就是偏向实践的教程,书也⽐较新是20年出版的,主要⽤的是TF2 和Keras,并且还配有github代码。跟着教材上的案例讲解配套看对应的章节的git代码,再⾃⼰复制下代码到Jupyter中运⾏,竟然很快就到了感觉。当时感觉深度学习好简单,开⼼的不得了,也很有成就感。
对于这本书⼀看⼊迷,根本停不下来。书中关于CNN、RNN、GAN、VAE等经典模型的讲解和代码实现⾮常之精彩、易懂。这时候我才惊觉,原来这就是我要的教材。⽽之前⾛的弯路,经历的挫折,承受的负⾯情绪的折磨都是因为⽤错了教材。误我深矣。
2、跟对⽼师
⽹上有很多深度学习、神经⽹络相关的视频教程,亦有很多名校的、名师的课程。⽐如⽐较⽕的台湾⼤学的某⽼师的课程,或者知名的吴恩达深度学习系列,MIT深度学习等等。虽然我机器学习是跟着吴恩达⽼师的视频课学的,当时真的是推崇备⾄,奉为圭臬,⾄今也是⾮常的喜欢,但是其深度学习的视频课程,我实在是没有跟下来。
可见⼀个⽼师擅长讲⼀门课的知识,但未必见得其他课的知识他也能讲的⼊门三分、趣味盎然。对于TensorFlow2和Keras的视频教程,我⽹上也看了⼀些,但⼤多没有给我很好的指导。直到我遇到了《TensorFlow2⼈⼯智能实践》视频课。我实在太喜欢这个⽼师了,讲解的⾮常的简要、精辟、直接⼜深刻,从不绕弯⼦,⼀点也不藏私,更绝的是很有⾃⼰的理解,⽽不是念书本。课程只有4个多⼩时,不⽤⼀星期就能完成⼀刷,刷完感觉⾃⼰就全部通了。浑⾝通透,就像被打通了任督⼆脉⼀样。
唯⼀可惜和遗憾的是我看到这个视频课的时候已经是6⽉上旬了,距离我2⽉中旬开始学习TensorFlow已经过去了近4个⽉了。真的希望当时的⾃⼰该再早点看到的。
3、成功安装TF2,成功配置IDEA开发环境解释器,成功进⼊开发环境
正如我前⾯所说的,到了6⽉中旬了,我还没有在IDEA开发环境中进⾏过神经⽹络模型的开发。之前成功运⾏的⼀直都是Jupyter环境,⽽这⾮常不利于⼯程化,更不是⼯作中开发上线模型所使⽤的开发环境。所以,如果不能成功安装TF2,不能在IDEA中成功配置TF2环境解释器,那么我永远也学不会神经
⽹络模型的⼯程化开发,永远⽆法进阶成为⾼级玩家。
痛定思痛,必须要解决这个问题。我相信做难事必有所得,不能逃避。不能⼀直在Jupyter开发环境上将就着。跟着⽹上的视频教程,终于从6⽉16晚上11点到6⽉17凌晨2点前把开发环境问题解决了。这样我就成功的步⼊了使⽤Pycharm进⾏神经⽹络模型⼯程化开发的阶段。这对于⼀个⼯程师来说是重要的⼀步,从此我就不再是使⽤Jupyter打野的了。
4、⾃⼰动⼿在IDEA中coding,熟练掌握建模的关键核⼼步骤
读万卷书,不如⾃⼰动⼿写书。代码就算你看了千千万,如果不能⾃⼰coding出来,都不能算你学会了。
code , debug, run 这是⼀个合格的算法⼯程师必须熟练和熟悉的,⽆须多⾔。
5、开始问问题,去读官⽅API⽂档寻答案
如果4还只是根据git或教材上的案例进⾏代码的记忆复现,那么现在这个阶段就是要深⼊细节、深⼊背后的原理。
问问⾃⼰,这个API的功能是实现什么,源码是怎么写的,都定义了哪些⽅法,每个⽅法都有哪些参数,参数背后⼜对应了深度学习的哪个知识、哪个原理。
选择了⼀个API+⽅法+参数,这样的配置对模型训练过程、结果的影响是怎样的。
什么样的场景下⽤这种API或⽅法,什么样的场景下⽤另⼀种API或⽅法,为什么,对应的原理⼜是什么。
API与API之间是怎么联动的,怎么交互作⽤的,是否⼜可以相互替代。
等等等,这些问题是⼀个业务熟练的算法⼯程师必须要知道答案的。⽽寻这些问题答案的不⼆途径就是看官⽅API⽂档,阅读API源
码,coding做实验验证⾃⼰猜想的答案,或者去书中寻答案的理论⽀撑。
6、开始在脑海中将各分散凌乱的API组织成⼀张交互的知识⽹,对庞杂的官⽅API⽂档有了功能逻辑上的整体认识
当阅读多了官⽅API⽂档,你会渐渐地发现这些API之间的联系和联动。你会清晰的看到这些API是如何将深度学习的理论知识进⾏⼀块块地代码实现的,它们不再是孤⽴的、单⼀的API,⽽是深度学习这个鲜活的⽣命体上的⼀个个细胞和组织。它们相互作⽤、连接,⼀起发挥作⽤,⽣成⼀个个和⽽不同的神经⽹络模型。
以上就是我从21年2⽉12到今天21年7⽉22这⼤半年来学习TensorFlow的过程和经验总结。对我来说这次的经历受益匪浅,为以后的学习之路蹚出来很多宝贵的经验和教训。分享出来给我的粉丝们,与君共勉。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论