Update (26 Feb 2021): After getting a bunch of questions on learning TensorFlow and how to pass the certification exam, I made a course which teaches the skills mentioned below. Sign up to learn the fundamentals of TensorFlow and how to pass the TensorFlow Developer Certification Exam.
At the start of May 2020, I decided to get TensorFlow Developer Certified. So I set myself up with a curriculum to sharpen my skills and took the certification exam a couple of days ago (June 3rd). Turns out, I passed.
Let me tell you how I did it and how you can too.
Hold on. What even is TensorFlow?
TensorFlow is an open-source numerical computing framework which allows you preprocess data, model data (find patterns in it, typically with deep learning) and deploy your solutions to the world.
It’s what Google use to power all of their machine learning services. Chances are, the device you’re reading this on has run some kind of TensorFlow before.
Okay, now we know what TensorFlow is, what is the TensorFlow Developer Certification? And why might you be interested in it?
What is the TensorFlow Developer Certification?
The TensorFlow Developer Certification, as you might’ve guessed, is a way to showcase your ability to use TensorFlow.
More specifically, your ability to use TensorFlow (the Python version) to build deep learning models for a range of tasks such as regression, computer vision (finding patterns in images), natural language processing (finding patterns in text) and time series forecasting (predicting future trends given a range of past events).
Why might you want to get TensorFlow Developer Certified?
My first reason was fun. I wanted to give myself a little challenge to work towards and a reason to read a new book I’d purchased (more on this later).
But two other valid reasons are:
- To acquire the foundational skills required to build machine learning powered applications.
- Showcasing your skill competency to a future employer.
Speaking of future employers, based on data from Hacker News's Who's Hiring page (a page which lists monthly collections of software developer jobs), it looks like compared to other deep learning frameworks, TensorFlow pulls out ahead.
I want to be clear, a paid certificate is no guarantee of getting a job. But in the world of online learning, where skills are becoming commoditised, it's another way to showcase what you’re capable of.
I think of it as a nice addition to add to your existing list of personal projects you’ve worked on — courses build foundation knowledge, projects build specific knowledge.
So how do you do it?
How to prepare for the exam
When I decided I wanted to I went through the certification website and read the TensorFlow Developer Certification Handbook.
From these two resources, I built the following curriculum.
Curriculum — what I studied to build the skills necessary for passing the exam
It should be noted that before I started studying for the exam, I had some hands-on experience building several projects with TensorFlow.
The experienced TensorFlow and deep learning practitioner, will likely find they can go through the following curriculum at about the same pace I did (3 weeks total), maybe faster.
The beginner will want to take as much time as needed. Remember: building any worthwhile skill takes time.
I’ve listed timelines, costs ($USD) and helpfulness level (towards passing the exam) for each resource. The timelines are based on my experience.
If you want to create a curriculum for yourself, I'd recommend something like the following.
Note: For paid resources, affiliate links have been used. This doesn't change the price of the resource but if you do happen to purchase one, I will receive a portion of the payment, money I use towards creating resources like this.
Helpfulness level: Required.
This should be your first stop. It outlines the topics which will be covered in the exam. Read it and then read it again.
If you're new to TensorFlow and machine learning, you’ll likely read this and get scared at all the different topics. Don’t worry. The resources below will help you become familiar with them.
Time: 3 weeks (advanced user) to 3 months (beginner).
Cost: $59 per month after a 7-day free trial, financial aid available through application. If you can't access Coursera, see the equivalent free version on YouTube.
Helpfulness level: 10/10.
This is the most relevant resource to the exam (and getting started with TensorFlow in general). The careful student will notice the TensorFlow Certification handbook and the outline of this specialization are almost identical.
It’s taught by Laurence Moroney and Andrew Ng, two titans of TensorFlow and machine learning and if I had to only choose one resource to prepare for the exam, this would be it.
I appreciated the short video format and focus on hands-on examples as soon as possible. The multiple code notebooks at the end of each section were must haves for any practical learner.
A tip for the programming exercises: don’t just fill in the code gaps, write the entire thing out yourself.
Time: 3 weeks (reading cover to cover, no exercises) — 3 months (reading cover to cover and doing the exercises).
Cost: Price varies on Amazon but I picked up a hard copy for $55. You can see all the code for free on GitHub.
Helpfulness level: 7/10 (only because some chapters aren’t relevant to the exam).
At 700+ pages, this book covers basically all of machine learning and thus, some topics which aren’t relevant to the exam. But it’s a must-read for anyone interested in setting themselves a solid foundation for a future in machine learning and not just to pass an exam.
If you’re new to machine learning, you’ll probably find this book hard to read (to begin with). Again, not to worry, you’re not in a rush, learning useful skills takes time.
Put it this way, if you want an idea of the quality of the book, I read the first edition during morning commutes to my machine learning engineer job. And I can tell you, more often than not, I’d end up using exactly what I read in the book during the day.
The 2nd edition is no different, except it’s been updated to cover the latest tools and techniques, namely TensorFlow 2.x — what the exam is based on.
If you’re only after relevant chapters to the exam, you’ll want to read:
- Chapter 10: Introduction to Artificial Neural Networks with Keras
- Chapter 11: Training Deep Neural Networks
- Chapter 12: Custom Models and Training with TensorFlow
- Chapter 13: Loading and Preprocessing Data with TensorFlow
- Chapter 14: Deep Computer Vision Using Convolutional Neural Networks
- Chapter 15: Processing Sequences Using RNNs and CNNs
- Chapter 16: Natural Language Processing with RNNs and Attention
But for the serious student, I’d suggest the whole book and the exercises (maybe not all, but pick and the choose the ones which suit spark your interests most).
Time: 3-hours (I only watched 3 lectures) — 24-hours (1-hour per lecture, plus 1-hour review each).
Helpfulness level: 8/10.
World-class deep learning information from a world-class university, oh and did I mention? It’s free.
The first 3 lectures, deep learning (in general), Convolutional Neural Networks (usually used for computer vision) and Recurrent Neural Networks (usually used for text processing) are the most relevant to the exam.
But again, for the eager learner, going through the whole course wouldn’t be a bad idea.
Be sure to check out the labs and code they offer on GitHub, especially the Introduction to TensorFlow one. And again, I can't stress the importance of writing the code yourself.
Time: 3-hours (depending on how fast your computer is).
Helpfulness level: 10/10 (using PyCharm is a requirement).
The exam takes place in PyCharm (a Python development tool). Before the exam, I'd never used PyCharm. And it's suggested you get at least somewhat familiar with it before you start.
So to familiarise myself with PyCharm, I went through their getting started series on YouTube which was very straightforward, "here's what this button does."
But the main tests were making sure TensorFlow 2.x ran without any issues and my computer could run deep neural networks in a respectable time (my MacBook Pro doesn't have a Nvidia GPU).
To test this, I replicated the following two TensorFlow tutorials on my local machine:
Both of these worked fine locally, however, as we'll see below, as soon as I started the exam, I ran into an issue.
- deeplearning.ai videos on Coursera/YouTube — The examination is purely code based (Python code) but if you want to know what’s going on behind the scenes of the code you’re writing (linear algebra, calculus), I’d jump in and out of videos here as you see fit. For example, if you’re not sure what mini-batch gradient descent is, search “deeplearning.ai mini-batch gradient descent”.
- TensorFlow documentation — If you’re going to be a TensorFlow practitioner, you’re going to need to be able to read the documentation. If you don’t understand something, write the code and comment it yourself.
- Coding with TensorFlow on YouTube (playlist) – Most of the TensorFlow in Practice Coursera Specialization in video series on YouTube, taught by the same instructor as well.
How did I prepare for the exam?
Armed with the resources above, I put together an outline in Notion.
Every morning throughout May, I'd get up, do some writing, go for a walk, read 1-hour of the Hands-on Machine Learning book, do 2-3 hours work of TensorFlow in practice (watching the lectures first, then completing all of the coding exercises in Google Colab) then at the end of each module I'd watch the corresponding MIT Introduction to Deep Learning Lecture.
For example, once I finished the computer vision section of the TensorFlow in Practice Specialization, I watched the Convolutional Neural Network (a type of computer vision algorithm) lecture from MIT.
This tribrid approach turned out to work particularly well.
A concept I'd read in the book would get cemented by code examples in the Coursera specialization and eventually summarised by the MIT video.
For an idea of the timeline, I started studying for the exam on May 11th and took it on June 3rd.
By my tracking (in Notion) and on my handwritten bookmark, I averaged 20-pages per hour and about 1-week of course content per 2-3 hour study block (no distractions).
Finally, a couple of days before the exam, I downloaded PyCharm and made sure a few of the code examples I'd been through worked on my local machine.
Examination details – what happens during the actual exam?
So you've done your study? Now what?
Well, let's start with two important factors.
Exam cost: $100 USD (per attempt, if you fail, you have to wait 2 weeks to try again and longer for each fail thereafter).
Time-limit: 5-hours. Without the error at the start of the exam, I'd say I would've comfortably completed it within 3-hours. However, the extended time limit is to give you enough time to train deep learning models on your computer (so make sure this works before starting).
How is the exam structured?
I'm not going to reveal much here because that would be cheating. All I'll say is read the TensorFlow Developer Handbook and you'll get a fair idea of the major sections of the exam.
Practice each one of the techniques mentioned in the handbook (using the resources mentioned above) and you'll be fine.
Training models – If your computer can't train deep learning models fast enough (part of the marking criteria is submitting trained models), you can train them in Google Colab using a free GPU, then download them, put them in the relevant directories for the exam and submit them through PyCharm.
My broken Python interpreter – The exam preparation material stresses that Python 3.7 is required for the exam. When I started, I had Python 3.7.3. And for some reason, even though TensorFlow was working the day before on my local machine using PyCharm, after starting the exam (which automatically creates a TensorFlow environment for you), it broke.
Namely, every time I ran a single line of TensorFlow code, I got the error:
RuntimeError: dictionary changed size during iteration
Now I'm not sure whether it's the version of TensorFlow the exam installs (2.0.0) or the specific version of Python I had (3.7.3).
None the less, after some cursing and heated searching through the depths of an old GitHub issue thread , I discovered a strange fix which meant having to alter the source code of the Python version I was using (specifically, line 48 of lincache.py).
After implementing the fix I was able to complete the exam with no issues.
Note: An alternative is to just update/reinstall the version of TensorFlow you’re using in PyCharm (e.g. 2.0.0 -> 2.2.x). I tried this and it didn’t work, though, being a novice to PyCharm, I suspect some user error.
What happens after you finish the exam?
You'll get notified via email when/if you passed the exam. There will be no feedback except "Congratulations you passed" or "Unfortunately you didn't pass this time".
Without spoiling too much, you'll get a pretty clear indication whilst taking the exam if you're likely to pass or not (each time you submit a model, it gets marked).
But if you do pass, congratulations!
Be sure to fill out the form in the email to make sure you get added the TensorFlow Certified Developers network.
Registering yourself here means anyone who's looking for skilled TensorFlow developers will be able to search for you based on your certification type, experience and region.
Finally, within a couple of weeks (I haven't got mine yet) you'll be emailed an official TensorFlow Developer Certification and badge. Two things you can add alongside the projects you've worked on.
Can I just do the courses, read the book and practice myself, do I really need the certificate?
Of course. At the end of the day, skills are what you should be after, not certificates. Certificates are nice to haves not need to haves.
If you say certificates aren’t needed, why’d you get it?
I like having a challenge to work towards. Setting a date for myself, as in, “I’m taking the exam on June 3rd”, gave me no choice but to study.
Can I do this with free resources?
Yes, of course you can. You can go learn all the skills you need by going through the TensorFlow documentation. In fact, when I need to practice something, I copy the documentation examples verbatim (every line of code), practice understanding it line by line, then see if I can do it myself.
Why not PyTorch?
I love PyTorch. But they don’t offer certification, if they did, I’d probably do it too (for fun). Plus, the experienced user of both frameworks (PyTorch and TensorFlow) will start to see that recent updates have meant the two are getting very similar. If anything, TensorFlow has an edge in the enterprise world (see graph above).
I don't know any machine learning, where can I start?
Read the article 5 Beginner Friendly Steps to Learn Machine Learning.
I've passed the exam, and registered with the Google Developers Certification network, what do I next?
Time to build! Use the skills you've learned to make something you'd like to see in the world. And don't forget to share your work, you never know who'll see it.
Something not mentioned? Feel free to ask it. And I'll answer it.
PS don't forget, you can see the video version of this article on YouTube.