|Advanced Deep Learning with TensorFlow 2 and Keras, 2nd Ed|
Author: Rowel Atienza
There's a shortage of books on AI with "advanced" in the title and this one has made it to a second edition.
Everyone wants to write an introductory book on deep learning - its easy and hopefully rewarding. In short there are lots of deep learning books that are shallow. This book isn't shallow, but it might not suit every reader. The most important thing to say is that this isn't an advanced theoretical text. If you are looking to learn the deeper principles, and more importantly the math, behind deep learning then this isn't going to be for you. As long as you aren't expecting deep theory then this might not be a problem as advanced examples are also useful and this is mainly what this book has to offer.
The book uses Keras and TensorFlow 2, and hence Python, but which language it is in is almost irrelevant as nearly all of the code is composed of function calls, which look the same in most languages. Keras is a good choice because it is widely used by the deep learning community and it supports a range of different backends. The book uses TensorFlow, which is another good choice, running on CPUs and occasionally NVIDIA GPUs. Although the book uses Keras, this isn't a Keras tutorial and if you want to understand the structure of the program you need a different book.
Chapter 1 deals with downloading and installing Keras and TensorFlow and there is a brief overview of the main types of neural network. This doesn't start from the basics, it just tells you that there are three types - multilayer, convolutional and recurrent. In theory terms this is a bit like starting an ascent of Everest from not far below the summit. There is plenty of discussion, but if you don't know your theory I'm not sure how much you are going to get from it. The example uses the well-known MNIST data set. You also meet ideas such as regularization, activation, loss function and get to build a multi-layer perceptron network.
From here on each chapter takes a particular type of network, explains it in very high level terms and builds a model to demonstrate it. Chapter 2, for example, deals with the simplest deep neural network, ResNet, and a convolutional network. If you don't know what a convolutional network is you won't know after reading the chapter. If you do know then building one might help you get to grips with the practicalities.
Chapter 3 introduces autoencoders, a much overlooked type of network that is useful as a component of larger architectures. The examples are a denoising autoencoder and automatic colorization autoencoder. Either project could become an obsession in the right hands.
Chapter 4 moves on to the basic Generative Adversarial Network or GAN. GANs get a lot of publicity because they are responsible for things like deep fakes and generating images of things from a description - they tend towards the arty application. This said they are still interesting in a wider context. This starts a section looking at variations on the basic GAN - Chapter 5 Wasserstein GAN and Least-Squares GAN; Chapter 6 infoGAN, and StackedGAN and Chapter 7 cross domain GANs. Chapter 8 introduces the idea of a variational autoencoder, which is an alternative to the GAN architecture.
Chapters 9 and 10 look at deep reinforcement learning which is also a hot topic - its the technique used to by AlphaGo to learn to play Go better than humans. Chapter 9 introduces basic Q learning and Chapter 10 policy gradient methods. There are some explanation of the theory but if you don't already know it you probably aren't going understand much of it.
There are three new chapters in the second edition and if you are interested in their topics they make it worth buying the new edition even if you have the old one. Chapter 11 is on a subject I find fascinating because it offers so many immediate practical applications - object detection. Only one algorithm is presented, SSD, although it is a good one. The chapter lacks an overall survey of the methods of object detection or any history but this isn't unreasonable. Chapter 12 is about the related topic of semantic segmentation, i.e. allocating pixels to objects. Again only one algorithm is introduced FCN. Chapter 13 looks at the use of mutual information as a way of training on non-labeled datasets via clustering/classifying.
This is not a book that the beginner would find useful, but it does have the warning term "Advanced" in the title. The examples go well beyond the basic introductions to any of the topics that you will find in most other books.It isn't a mathematical exposition of the subject but there are lots of equations and if you find this off-putting this is your fault, not the book's.
It is very strong on GANs and if this is an area that interests you then so much the better. The explanations around each example don't really help you understand what is going on - at best they are reminders of what you should already know. The same is true of using Keras - there is no real explanation of how Keras is organized or how it works. You are expected to learn by example.
This might sound as if I think the book isn't valuable - it is, but mainly as a set of advanced examples. If this is what you are looking for then this is exactly the book you need. The addition of two very practical computer vision methods in this second edition makes it all the more valuable.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.
|Last Updated ( Saturday, 12 September 2020 )|