Tensorflow 开发者认证记录

- 记录

又名:我是如何在 7 天内通过 Tensorflow 开发者认证的,以及你应该这样做吗?

作者在 2021/7/4 参加考试。本文写于 2021/7/7。文中内容可能在未来发生变化。

下文简称 Tensorflow 为 TF,机器学习(Machine Learning)为 ML,深度学习(Deep Learning)为 DL。虽然 DL 在分类上而言是 ML 的一部分,但鉴于 DL 在各大领域取得的进展,常常将 ML 和 DL 并列。

TL;DR

预备知识

这个证书是什么?

为什么你可能会想要这个证书?

考试如何进行?

我的个人背景

我参加这一考试的目标

后文将会回顾这些目标的完成度。

考前准备

我首次听说这个考试是在 Daniel Bourke 的视频 (YouTube),主要使用的相关资料也主要参考了他的博客。此外,TFUG 苏州的这一视频讲解 (Bilibili)微信公众号文章 也提供了一些帮助。

资源

以下资源按重要程度排序。

  1. TF 开发者证书候选人手册(中文版 link英文版 link) TF 开发者证书考试指导,TF 开发者证书考试环境配置(考前可从考试平台下载)

    必须。《候选人手册》是最重要的官方文档,需要详细阅读。其中有一个技能清单(Skill Checklist),基本上也就是考试会覆盖的主要内容了。《考试指导》和《环境配置》两个文档在为考试缴费后才在考试平台上可见,建议在开考前先通读一遍,并试着自己建立环境,以避免开考后遇到环境配置问题。

  2. 在线课程《DeepLearning.AI TensorFlow Developer 专业证书》(Coursera课程 Notebook Repo

    必须。 实际上是四门课程的集合,分别覆盖深度学习基础、CNN、NLP和时间序列。和技能清单几乎完全重合(实际上课程主讲和证书发放签名人是同一位)。课程内有视频和在线测评环境,习题也和真正的考试试题差不多,基本上能跟着完成课程,考试也就不会有太大问题了。课程本身价格是 $59,但是有一周的免费试用(需要银行卡),可以快速刷完后取消付款方式关联。

  3. 书籍 (HOML)《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition》(中文版:《Scikit-LearnKerasTensorFlow 机器学习实用指南(第二版)》)(O’Reilly书 NoteBook Repo)

    推荐。 这本书更接近延伸阅读材料,内容本身超出考试很多,但是对构建知识体系更有帮助。有些内容在线课程里说的不是很清楚(如 tf.Dataset 的使用),书里会有更详细的讲解。和考试相关的部分是第 10 章至第 16 章。我所在的学校购买了 O’Reilly 的电子订阅,因此我选择在 iPad 上进行阅读,但是也可以购买纸质版本阅读。

  4. TF 官方文档(教程指南

    可选。 教程类似于 Cookbook,有解决各种任务的示例。指南则更注重底层原理和基础知识。可以先浏览一遍目录,在遇到不懂之处的时候进行查阅。如有时间也可通读。

学习思路

面对这种多种资源覆盖同一主题的情况,一般有两种学习思路:

纵深 重复
纵深 重复

在 Daniel Bourke 的博客分享中,他使用的是纵深的学习思路(tribird approach,一石三鸟),每天选定一个主题,首先看对应的在线课程,然后阅读书籍,再花时间写代码练习,最后看 MIT 的视频收尾。但是根据我自己的经验,我更习惯于重复的学习思路,需要让大脑把知识在后台处理一段时间,才能找到一些没想清楚的地方,从而进一步学习。各位读者可以根据自己的习惯选择合适的路线。

学习时间线

学习建议

设备与环境

我自己使用的是实验室内的工作站,GPU (Quardo M2000, 4G VRAM) 比较老旧,系统是 Ubuntu 18.04,Pycharm 版本 2021.1.3 Community。为了保险,考前在学校的超算上申请了一个 GPU 示例备用,GPU 为 RTX2080。

考试本身需要训练的模型其实都不会太大,根据《考试指导》中的描述,如果能在本地跑通 图像分类文本分类 这两个示例,基本就不会有问题了。再加上有五个小时的时间,一般情况下是不用担心本地算力过低导致训练失败的。如果条件是在比较有限,可以使用 Colab 进行训练,或者是在主流的云厂商平台上购买带有 GPU 或是为深度学习优化过的实例。

考试是在 virtualenv 的虚拟环境中建立的,需要提前在系统级别安装 Python 3.8 版本。官方的《考试指导》中特别注明了不可以使用 Anaconda,不太确定原因,但是最好遵守。

需要注意的是,Pycharm 本身虽然可以设定使用远程 SSH 连接下的 Python Interpreter,但是这一配置是不受到考试插件支持的,因此最好直接在具有 GPU 的设备上安装 Pycharm 和考试插件。

网络环境方面,因为考试本身需要从 Google 的服务器下载数据集和上传模型,建议自行确保到国际互联网的连接质量,或是在网络低峰期参加考试。数据集在代码中使用 request 库进行下载,但是也可以手动使用其他工具下载后放置于考试目录内。

考试中

我自己的这一次考试比较幸运,因为事前自己根据《环境配置》文档验证过环境,没有遇到环境导致的问题。5 个题目都不是很难,我在开考后的 40 分钟就完成了 4 个题目并拿到 5/5,但是 NLP 的题目十分诡异,尝试了各种架构都只能得到 4/5 评分。最后换了优化器,调小学习率,增大 epoch 数慢慢训练,总算 5/5 了。最后结束考试的时候,还剩余 3 小时 10 分钟。

本次我遇到的 5 个题目是:

  1. 一个很简单的回归
  2. 一个你绝对已经遇到过多次的数据集的分类
  3. 图像分类
  4. 自然语言处理(文本分类)
  5. 时间序列预测

考试结束后

如果通过,几分钟内就会收到通过邮件,并可以填写信息注册到 Google 的认证网络。数字证书需要几个工作日才会通过电子邮件发送。

回顾与总结

回顾这一周,我认为这是一次有趣的经历。可能对我而言,花钱是强迫自己学习的有效方式,至少这一周我是好好把 HOML 中的部分章节给啃下来了。考试本身比想象中容易很多,更说明通过这场考试只是一个开始,仅仅证明自己具备了基本的,跟随教程完成部分简单任务的技能,但是离真正掌握还有很远。

之前我自己定下的目标的完成情况如下:

所以你应该参加这个认证吗?

在我看来,对于未来的计算机/数据科学专业的学生,ML/DL 的技能会被认为是「默认掌握」的。TF 的这个开发者认证,会更接近当前「计算机二级」认证的认可层级:对专业外的学生是额外技能的体现,对于专业内的学生则没有太大的意义。但是就当前而言,获得这一认证可能还是有其意义的,至少在一些小公司可能更容易让你通过 HR 筛。

表格:如果满足以下条件,你…参加这个认证

可能应该 可能不应该
- 想强迫自己学点东西
- 从其他专业转行,需要证明自己的能力和求职意向
- 简历上没有太多能写的经历
- 已经有了成熟、丰富的 ML/DL 经验
- 手头没有闲钱/时间
- 觉得 TensorFlow 太难用了,PyTorch 万岁