作者:Daniel Bourke
发表时间:06/06/2020
翻译:方星轩
本文长度为5600字,建议阅读10分钟
本文通过作者参加TensorFlow的资格考试的经历总结考前准备以及回答考试会出现的问题。
标签:机器学习|TensorFlow|数据科学|人工智能
原文作者
5月初,我决定考取TensorFlow开发人员认证考试。
因此,我为自己制定了学习计划来提升技能https://www.mrdbourke.com/ml-study-may-2020/,并在6月3日参加了认证考试。
然后,我!通!过!了!
这篇文章将与你分享我是如何做到的。你也能做到!
TensorFlow是什么?
TensorFlow是一个开源的数值计算框架,它允许你预处理数据,数据建模 (通常通过深度学习来查找模式),并将解决方案实施到世界各地。
谷歌的所有机器学习服务都是由它支持的。你正在使用的设备就很有可能已经运行了某种TensorFlow。
通常,编写TensorFlow代码你可以使用非常容易理解的Python(考试用Python)或JavaScript(tensorflow.js), 它们将会调用一系列C语言编写的函数来实现你的指令(很多是数值计算)。
什么是TensorFlow开发者认证?
TensorFlow开发者认证(https://www.tensorflow.org/certificate)是证明你具备使用TensorFlow能力的认证。 更具体地说,你具有使用TensorFlow(Python版本)构建深度学习模型的能力,有能力完成一系列任务,例如回归,计算机视觉(图像中的模式查找),自然语言处理(文本中的模式查找)和时间序列预测(根据一系列过去的事件预测未来的趋势)。
为什么要获得TensorFlow开发者认证?
我的第一个原因很简单,我想给自己一个挑战,并给我读一本新书的理由(稍后会详细介绍)。
另外两个原因是:
- 1. 获得搭建机器学习的应用程序所需要具备的基本技能。
- 2. 向未来的雇主展示你的技能。
说到就业,根据Hacker News的Who's Hiring页面上的数据(该页面列出了每个月软件开发人员招聘的技能要求),与其他深度学习框架相比,TensorFlow显得遥遥领先。
Hacker News的Who's Hiring
https://www.hntrends.com/2020/may-big-drop-developer-job-postings.html?compare=TensorFlow&compare=PyTorch&compare=Keras
比较了不同的深度学习框架在Hacker News的Who's Hiring页面职位中被提及的次数。备注1:从TensorFlow 2.x开始,Keras基本上是TensorFlow的一部分。备注2:由于当前的全球环境,任何软件开发人员的总体招聘人数下降。
我要明确一点,这个证书并不保证你100%能找到工作。但是,在如今在线学习的世界中,技能日趋商品化,这是展示你的能力的一种方式。我认为这个技能能够丰富你已有的个人项目 -- 你可以在课程中获得基础知识,在项目实践中获得特定的知识(Courses build foundation knowledge, projects build specific knowledge.)。
所以要如何做呢?
如何准备考试?
当我决定想要的时候,我浏览了认证网站并阅读了TensorFlow开发者认证手册。
通过这两种资源,我构建了以下课程。
TensorFlow网址:
https://www.tensorflow.org/certificate?hl=zh-cn
通过考试所必备的技能课程:
在我开始为考试学习之前,我有一些使用TensorFlow构建多个项目的经验,非小白。
所以经验丰富的TensorFlow和深度学习从业人员可能会与我完成课程的速度大致相同(总共3周),或许更快。
初学者将需要花费尽可能多的时间。谨记:学习任何有价值的技能都需要时间。
我列出了每种相关材料的时间表,费用($ USD)和它对考试的帮助级别。时间表是根据我的经验得出的。
如果你想为自己创建课程,建议参照我下面的计划。
注意:对于需要付费的资源,我附上的是我的推广链接。但这不会改变它的价格,但是如果你确实购买了课程,我将会收到一部分佣金。
- 1. TensorFlow开发人员认证手册
网站:https://www.tensorflow.org/site-assets/downloads/marketing/cert/TF_Certificate_Candidate_Handbook.pdf
时间:1小时。
费用:免费。
帮助级别:必需。
这是第一步。TensorFlow开发者手册概述了考试中涉及的主要题目。重复阅读它,很有用。如果你是TensorFlow和机器学习的新手,可能会因为繁多的主题 感到压力。但是不用担心,以下资源将帮助你熟悉它们。
- 2. Coursera课程TensorFlow in Practice Specialization
网站:
https://www.coursera.org/specializations/tensorflow-in-practice
时间:3周(高级用户)至3个月(初学者)。
费用:7天免费试用后每月59美元,可通过申请获得经济援助。如果你无法访问Coursera,也可以在YouTube上查看免费版本。
帮助级别:10/10。
这是与考试最相关的资源(也通常帮助入门TensorFlow)。细心的你会注意到这门课的章程跟TensorFlow认证手册基本一致。这门课是由TensorFlow和机器学习的两位大咖Laurence Moroney和Andrew Ng教的。如果只能选择一种材料来准备考试,那么我会选择这门课。它采用简短的视频格式,并提供动手实例。每节课的结尾都为学习者提供了多个code notebooks练习。
编程练习小提示:不要只是填补代码空白 完成作业,而是自己尝试编写整个程序。
- 3.《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems 第二版
网站:https://www.amazon.com/gp/product/1492032646/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1492032646&linkCode=as2&tag=mrdbourke-20&linkId=b943d05f3bad8bd604f66cdbb49d35ef
时间:3周(仅阅读)— 3个月(阅读然后做题)
费用:亚马逊上的价格各不相同,但我以55美元的价格购买了印刷版。你可以在GitHub上免费查看所有代码。
帮助等级:7/10(某些章节与考试无关)。
本书涵盖700余页,基本上涵盖了所有机器学习知识,因此涵盖了与考试无关的一些主题。但这对于任何对机器学习有兴趣并计划打下坚实基础而不只是通过考试的人来说都是必读的。
如果你是机器学习的新手,那么你可能会发现这本书在一开始有难度。但是,花费时间和脑力在学习有用的技能上是值得的。
第二和第一版没有什么不同,它只是更新以涵盖最新工具和技术,即TensorFlow 2.x(资格考试所运用的技术)。
如果你只是为了参加考试,只需要阅读以下相关章节:
- 第10章:Keras人工神经网络简介
- 第11章:训练深度神经网络
- 第12章:使用TensorFlow进行自定义模型和培训
- 第13章:使用TensorFlow加载和预处理数据
- 第14章:使用卷积神经网络的深度计算机视觉
- 第15章:使用RNN和CNN处理序列
- 第16章:具有RNN和注意力的自然语言处理
- 对于认真的学生,我建议你阅读整本书和做练习题(也可以选择最能激发你兴趣的部分)。
- 4.麻省理工学院深度学习课程
网址:http://introtodeeplearning.com
时间:3小时(我只看了3堂课)— 24小时(每堂课1个小时,外加1小时回顾)。
费用:免费。
帮助级别:8/10。
来自世界一流大学的一流深度学习课程,而且还免费。前3个讲座,深度学习(基础),卷积神经网络(Convolutional Neural Networks)(通常用于计算机视觉)和递归神经网络(recurrent neural networks)(通常用于文本处理)与考试最相关。
对于那些渴望学习的你来说,学习整个课程并不是一个难事。
一定要去看他们在GitHub上提供的实验和代码,尤其是Introduction to TensorFlow(https://github.com/aamini/introtodeeplearning/)。再说一遍,自己动手编写代码非常重要!!!
- 5. PyCharm入门
时间:3小时(取决于计算机的速度)。
费用:免费。
帮助级别:10/10(必须使用PyCharm)。
考试在PyCharm(Python开发工具)中进行。考试前,我从未使用过PyCharm。所以建议你在开始之前至少对它有所了解。因此,为了熟悉PyCharm,我在YouTube上开始了他们的入门系列,这很简单。
但是主要是要确保TensorFlow 2.x可以正常运行,我的计算机可以在相当长的时间内运行深度神经网络(我使用的MacBook Pro没有Nvidia GPU)。
为了测试这一点,我在本地计算机上操作了以下两个TensorFlow教程:
1. 使用TensorFlow进行图像分类
https://www.tensorflow.org/tutorials/images/classification
2. 使用TensorFlow进行文本分类
https://www.tensorflow.org/tutorials/text/text_classification_rnn
两者在本地都能正常运行,但是,正如我们将在下面看到的那样,当我开始考试时,我遇到了一个问题。
- 其他
- Deeplearning.ai videos on Coursera/YouTube
https://www.youtube.com/channel/UCcIXc5mJsHVYTZR1maL5l9w/playlists
考试完全基于编写Python代码,但是如果你想知道所编写代码的幕后是什么(线性代数,演算),可以随时暂停去学习。例如,如果你不确定什么是小批量梯度下降(mini-batch gradient descent),请搜索“ deeplearning.ai小批量梯度下降”。
- TensorFlow documentation
https://www.tensorflow.org/api_docs/python/tf
如果你要成为TensorFlow的从业人员,则需要有能力阅读该文档。如果你不懂,请编写代码并自行注释。
- Coding with TensorFlow on YouTube
https://www.youtube.com/playlist?list=PLQY2H8rRoyvwLbzbnKJ59NkZvQAW9wLbx
大部分TensorFlow in Practice Coursera Specialization in video series的课程在YouTube上是由同一位讲师讲授的。
我如何准备考试的?
借助上面的资源,我整理了一个大纲。
我的TensorFlow Developer Certification curriculum in Notion。我使用了Kanban technique来跟踪需要完成的工作以及各种资源和注释。
访问链接:https://www.notion.so/Getting-TensorFlow-Developer-Certified- Curriculum-ff8385b6f9284fdfbc930ea06ce8749c
在整个五月的每个早晨,我会起床写作,散步,阅读1个小时的《Hands-on Machine Learning》书,做2到3个小时的TensorFlow练习,首先看视频课程,然后完成Google Colab中的所有编码练习,然后在每个模块的最后,观看相应的MIT深度学习入门讲座。
例如,一旦我完成了TensorFlow in Practice Specialization的计算机视觉部分,接着就观看MIT的卷积神经网络(一种计算机视觉算法)讲座。事实证明,这种三重方式(tribrid approach)非常有效。我在书中阅读过的概念将被Coursera专业化中的代码示例所巩固,并最终由MIT视频进行总结。
时间方面,我从5月11日开始学习考试,并于6月3日参加考试。
通过跟踪记录(in Notion中)和手写书签,我平均每小时可以学习20页,每2到3个小时就可以学习1周的课程内容,不分心的话。最后,在考试前几天,我下载了PyCharm,并确保了我之前编写过的一些代码在本地环境下可以运行。
考试详细信息-实际考试期间会发生什么?
从两个重要因素开始:
- 考试费用:100美元/次(如果失败,则必须等待2周才能重考,之后每次失败的所需等待的时间会变长)。
- 时限:5小时。如果没有考试开始时的错误,我会在3小时内轻松完成。但是,额外的时间是给你在计算机上训练深度学习模型(所以,请确保在你开始考试之前这个训练没有问题)。
考试的结构如何?
我不会在这里透露太多,因为这样算作弊。我要说的是阅读TensorFlow开发人员手册,将帮助你对考试的主要部分有一个清晰的了解。
练习每一种手册上提供的练习(以上提到的材料),考试将变得很轻松。
- 考试花絮
训练模型-如果你的计算机不能够快速地训练深度学习模型(评分标准的一部分 是提交训练后的模型),则可以在Google Colab使用免费的GPU 对其进行训练,然后下载它们,并将其放入相关目录中并通过PyCharm提交。
我的Python编辑器不好用了-考试准备材料强调考试需要Python 3.7。开始时,我使用的是Python 3.7.3。出于某种原因,即使前一天TensorFlow还可以使用PyCharm在我的本地计算机上工作,在开始考试(自动创建TensorFlow环境)后,它还是不好用了。
每次我运行一行TensorFlow代码时,都会收到错误消息:
RuntimeError: dictionary changed size during iteration
现在,我不确定是考试安装的TensorFlow版本(2.0.0),还是我安装的特定Python版本(3.7.3)的问题。
尽管如此,在Github上进行了一番搜索之后(https://github.com/tensorflow/tensorflow/issues/33183),我发现了一个奇怪的修复程序,这意味着必须更改我使用的Python版本的源代码(特别是lincache.py的第48行) 。
# Previous line 48 of lincache.pyfor mod in sys.modules.values():# Updated line 48 of linecache.pyfor mod in list(sys.modules.values()): # added list()
注意:由于这是一次考试,因此只是一个快速解决方案,所以我不确定它是否有长期的效果。
在搜索期间,我还读到了另一种方法,就是更新/重新安装你在PyCharm中使用的TensorFlow版本(例如2.0.0-> 2.2.x)。我尝试过此方法,但是它不起作用,但是,作为PyCharm的新手,我怀疑是某些用户错误。
实施此修复程序后,我可以顺利完成考试。
完成考试后会怎样?
通过考试,你会收到电子邮件通知。除了“恭喜你通过”或“不幸的是你这次没有通过”之外,没有其他反馈。其实你在考试的过程中就可以对自己是否通过有个大致的判断,因为每提交一个模型,系统都会给出评分。
但是,如果你通过了,那么恭喜!
请在电子邮件中填写表格,以确保你被添加进TensorFlow Certified Developers network:
https://developers.google.com/certification/directory/tensorflow
通过考试并在电子邮件确认中填写表格后的几周内您将可以出现在Google的全球认证网站。需要1-2周。
注册在这里之后,任何正在寻找熟练使用TensorFlow开发者的公司都可以根据你的认证类型,经验和地区来搜索到你。
最后,在未来几周内你将收到一封正式的TensorFlow开发者认证证书和徽章。
Q&A
我真的需要证书吗?可以只学习不考证么?
归根结底,提升技能是目的,而不是证书。有证书是好的但不是必须的。
如果你说不需要证书,为什么要获得证书?
我喜欢面对挑战。为自己设定一个日期,例如“我将于6月3日参加考试”,这让我别无选择,只能学习。
我可以使用免费资源吗?
是的,当然可以。你可以通过阅读TensorFlow文档来学习所需的所有技能。实际上,当我需要练习某些东西时,我逐字的复制示例(每行代码),练习并理解它,然后看看自己是否可以做到。
为什么不使用PyTorch?
我爱PyTorch。但是他们不提供认证,如果提供的话,我可能也会这样做。另外,这两个框架(PyTorch和TensorFlow)的老用户可以看出最近的更新使这两个框架变得非常相似。如果这俩有任何不同的话,那么TensorFlow在企业界更具有优势(请参见上图)。
我不知道任何机器学习方法,该从哪里开始?
阅读文章 “5个初学者友好的机器学习步骤”。
https://www.mrdbourke.com/5-beginner-friendly-steps-to-learn-machine-learning/
我已通过考试,并已在Google Developers Certification网络中注册,接下来该怎么办?
是时候创造了!利用你学到的技能,制作出你想在世界上看到的东西。而且,别忘了分享你的作品,你永远都不知道谁会看到你的作品。
附注:如果你更喜欢看东西,我做了一个视频来讲述这个文章所涵盖的内容。
https://www.youtube.com/watch?v=ya5NwvKafDk&feature=youtu.be
原文标题:
How I passed the TensorFlow Developer Certification Exam
原文链接:
https://towardsdatascience.com/how-i-passed-the-tensorflow-developer-certification-exam-f5672a1eb641
编辑:王菁
校对:洪舒越
译者简介
方星轩,美国东北大学数据分析研究生在读,本科毕业于美国莫瑞州立大学商学院。对利用数据来进行市场和企业内的分析有着浓厚的兴趣,对机器学习AI领域充满好奇。喜欢篮球,吉他,旅行,希望能够结交朋友分享故事,拓宽视野,客观的看待世事万物。
—完—
想要获得更多数据科学领域相关动态,诚邀关注清华-青岛数据科学研究院官方微信公众平台“ 数据派THU ”。
,