Book Image

Hands-On Convolutional Neural Networks with TensorFlow

By : Iffat Zafar, Giounona Tzanidou, Richard Burton, Nimesh Patel, Leonardo Araujo
Book Image

Hands-On Convolutional Neural Networks with TensorFlow

By: Iffat Zafar, Giounona Tzanidou, Richard Burton, Nimesh Patel, Leonardo Araujo

Overview of this book

Convolutional Neural Networks (CNN) are one of the most popular architectures used in computer vision apps. This book is an introduction to CNNs through solving real-world problems in deep learning while teaching you their implementation in popular Python library - TensorFlow. By the end of the book, you will be training CNNs in no time! We start with an overview of popular machine learning and deep learning models, and then get you set up with a TensorFlow development environment. This environment is the basis for implementing and training deep learning models in later chapters. Then, you will use Convolutional Neural Networks to work on problems such as image classification, object detection, and semantic segmentation. After that, you will use transfer learning to see how these models can solve other deep learning problems. You will also get a taste of implementing generative models such as autoencoders and generative adversarial networks. Later on, you will see useful tips on machine learning best practices and troubleshooting. Finally, you will learn how to apply your models on large datasets of millions of images.
Table of Contents (17 chapters)
Title Page
Copyright and Credits
Packt Upsell
Contributors
Preface
Index

Why generative models


In the following illustration, we can see the main difference between generative models and discriminative models. With discriminative models, we generally try to find ways of separating or "discriminating" between different classes in our data. However, with generative models, we try to find out the probability distribution of our data. In the illustration, the distributions are represented by the large blue and yellow blobs that contain smaller circles. If we learn this distribution from our data, we will be able to sample or "generate" new data points that should belong to it like the red triangle.

Trying to capture the probability distribution of a dataset has the following use cases:

  • Pretrain a model with unlabeled data
  • Augment your dataset (in theory, if you capture the probability distribution of your data, you can generate more data)
  • Compress your data (lossy)
  • Create some sort of simulator (for example, a quadcopter can be controlled with four inputs; if you capture...