TensorFlow is one of the two dominant deep learning frameworks. It is heavily used in industry to build cutting-edge AI applications. While its rival PyTorch has seen an increase in popularity over recent years, TensorFlow is still the dominant framework in industry applications. Most machine learning engineers, especially deep learning engineers, are well-advised to learn how to use TensorFlow.
There are several ways to learn TensorFlow. In this post we discuss the best ways to learn TensorFlow and point you to corresponding resources for learning. For those of you who don’t want to read a long guide, here is the most efficient way right away:
In my experience, the most efficient way to learn TensorFlow in terms of time and money is a collection of good online courses, and the official TensorFlow tutorials. Online courses guide you through the most important concepts. This saves you a lot of time that you would otherwise use on researching concepts and moving through disparate tutorials on the web. Most of the courses have programming tutorials that give you lots of hands-on practice. Online courses also cost only a fraction of the money a course at a university or coding BootCamp would cost.Ideally, you supplement the online course with your own hands-on projects.
Is TensorFlow Difficult to Learn?
Up to an intermediate level, TensorFlow is not difficult to learn if you have a foundation in Python programming and you rely on high-level APIs such as Keras. A foundational knowledge of machine learning and neural networks in particular also helps tremendously. An intermediate-level knowledge should be sufficient for entry-level machine learning jobs. While there are study materials for more advanced applications of Tensorflow, you will only master advanced concepts through years of hands-on practice. These years of practice are usually required for senior machine learning jobs.
Can a Beginner Learn TensorFlow?
In general, a beginner can learn Tensorflow even if she is completely new to machine learning. The only real prerequisite is some programming knowledge, preferably in Python. If you are a complete beginner with no knowledge whatsoever of machine learning, the learning curve is going to be significantly steeper. Getting a solid foundation in machine learning and Python programming before you attempt to start learning TensorFlow will certainly make your learning journey smoother.
In the next sections, we will discuss in detail what that foundation consists of.
How Long Does it Take to Learn TensorFlow?
If you already know Python programming and the theoretical foundations of neural networks, you can become a productive TensorFlow developer in 1 to 2 months. If you are a complete beginner in machine learning and programming, 3-6 months is a more realistic timeline. Building deep expertise in TensorFlow takes several years of applied practice.
A Roadmap for Learning TensorFlow Efficiently
To learn TensorFlow as efficiently and quickly as possible, you need to strategically structure your learning roadmap so that concepts build on one another. In this section, we look at the main TensorFlow concepts in the order I recommend learning them for maximum benefit.
I assume that you don’t just want to use pretrained models, but you want to learn to build and train machine learning models, build ML pipelines, and put models into production using TensorFlow.
Understanding basic Python syntax, variables, data structures, loops, and functions should be enough for the beginning. But once you get into the advanced TensorFlow APIs, an understanding of object-oriented concepts such as classes, abstraction, encapsulation, inheritance, and polymorphism in Python will be necessary.
Foundations of Neural Networks
Since TensorFlow is a deep learning framework, it helps a lot to have a conceptual understanding of neural networks. While you do not have to know the calculus behind backpropagation, you should know the basic building blocks of neural networks.
Data Dimensionality and Matrix Algebra: You will feed data as matrices or multidimensional tensors to your TensorFlow models. Understanding the data dimensions of your data and how they change is crucial for building models in TensorFlow. You should also understand basic mathematical operations from linear algebra, such as matrix addition, subtraction, and dot products.
Types of Layers: Understand the types of layers that are used in a network and how they affect the data dimensionality
Activation functions: Know which activation function is appropriate depending on the layer and the type of problem.
Cost Functions: Know which cost function is appropriate depending on your data.
Other important concepts, including optimizers and advanced layer types such as convolutional layers, are not necessary prerequisites. In the beginning, default implementations for optimizers are usually enough, and you can learn about advanced deep learning concepts after you have mastered the foundations of TensorFlow.
Building Models with the Keras Sequential API
Keras is an API on top of TensorFlow that significantly simplifies TensorFlow snytax. Using Keras does not preclude you from using raw TensorFlow in the same code. Accordingly, I recommend using Keras wherever you can and only using TensorFlow for functionality that Keras doesn’t handle. That way, you will be productive much more quickly.
The sequential API allows you to quickly throw together and train a model. If you rely on readily prepared datasets provided by TensorFlow, you don’t need to learn the mechanics of data preprocessing first. Data preprocessing is usually more frustrating which is why I recommend learning to train models with the sequential API first.
Sooner or later, you want to train a model on your own data. In almost all cases, your raw data won’t be in a state where you can simply import it and go on to training a model. Tensorflow gives you a rich set of tools for manipulating and preprocessing data that can be leveraged to build automated data processing pipelines. Learn how to import external data. Kaggle is a good source for finding datasets that you can manipulate with TensorFlow.
Keras Functional API, DataTypes, and Arithmetic Operators
The functional API is much more powerful and allows you to customize models to a much greater extent than the sequential API.
At this point, it is also a good idea to become familiar with object-oriented Python as well as TensorFlow’s datatypes and arithmetic operators.
By that point, you have a very good foundation in TensorFlow. From here on, you can dive into more advanced areas such as distributed training, constructing data pipelines, generative deep learning, or reinforcement learning, depending on your interests and needs.
To learn as quickly as possible, I recommend beginners to find a good online course that has hands-on programming tutorials. You could also find an in-person BootCamp. But for most people, this is not an option due to location, time, and money constraints which is why I won’t discuss this option here.
As you become a more advanced TensorFlow user, practice in the form of real projects is key. Ideally, you find a job that lets you apply your TensorFlow skills. But if that is not possible, unique private projects are very valuable as well.
All other tools such as books, tutorials, videos, and the official documentation are helpful supplements to a solid online course and real-life projects.
When it comes to online courses, there are several options. The main players are Coursera, Udacity, and Udemy.
Coursera offers several TensorFlow courses from beginner to advanced. In my opinion, Coursera offers the best overall course experience in terms of quality and price. The courses are created by DeepLearning.ai, Andrew Ng’s AI education company. Most of them feature Andrew Ng and are taught by a Google TensorFlow developer advocate. The courses come with video lectures, handouts, and hands-on programming labs that are auto-graded.
I recommend starting with the “DeepLearning.AI TensorFlow Developer Professional Certificate“. It is a series of 4 courses that will take you from complete beginner to an intermediate understanding of TensorFlow. The first course is a general introduction, while the later courses focus on intermediate concepts such as building convolutional neural networks and sequence models.
After finishing the professional certificate, you should get some hands-on experience building 2-4 end-to-end projects in TensorFlow. Just get some data from Kaggle and try to build a model around it. Next, take the “TensorFlow: Advanced Techniques Specialization” also by DeepLearning.AI. Upon finishing this one, you should have enough knowledge to hit the ground running in a developer role that involves TensorFlow.
Udemy offers a lot of courses related to TensorFlow, which makes it difficult to choose a particular one. The main problem with Udemy is that anyone can create a course there, so you have no guarantee for quality. Furthermore, most courses are purely video-based and lack interactive labs that are absolutely crucial to learning. For these reasons, I will not recommend any specific courses on Udemy here. This doesn’t mean there aren’t good TensorFlow courses on Udemy.
Udacity offers Nanodegree programs that aim to make you proficient in a technology over the course of several months with intensive study. They also offer a nano degree called “Intro to Machine Learning with TensorFlow“. You will do lots of hands-on projects that will be reviewed by experienced reviewers that provide personalized feedback. I like the concept as it is probably the closest thing you get to an in-presence boot camp. Unfortunately it comes with a steep price tag that is orders of magnitude higher than what you get with Coursera or Udemy. The last time I looked, the TensorFlow nano degree cost more than 1000 USD for 3-month access. There are some free Tensorflow programs on Udacity as well but, somewhat understandably, they have nowhere near the depth that you get with a paid nano degree.
Books are great additions to online courses and to building TensorFlow-based projects. Books often go more in-depth than courses and offer insights that you can’t even find in the official documentation.
Deep Learning with Python is a comprehensive introduction to deep learning written by Francois Chollet, the creator of the Keras API. Accordingly, you will find lots of great information about using Keras and TensorFlow in practice in his book. I highly recommend getting this book, especially if you are new to deep learning. It is a great companion for any TensorFlow based deep learning project.
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow is another comprehensive introduction to machine learning that focuses on TensorFlow. The first part focuses on classical machine learning, so if you are completely new to machine learning, this is a great book to get. The second part offers an introduction to deep learning with practical implementations in Keras and TensorFlow.
Documentation and Tutorials
The best resource for most questions will be the official TensorFlow documentation and the guides provided by the TensorFlow team which can be found here.
Youtube and Blogs
Machine Learning Mastery has lots of good hands-on tutorials related to Keras and TensorFlow.