Deep learning is about composing differentiable functions into more complex functions, represented as a computation graph, and then using automatic differentiation ("autograd") to compute gradients, which we can pass to an optimizer, to fit the function to data. This is sometimes called "differentiable programming".

There are several libraries that can execute such computation graphs on hardware accelerators, such as GPUs. (Some libraries also support distributed computation, but we will not need use this feature in this book.) We list a few popular libraries below.

Name | Functionality | More info |
---|---|---|

Tensorflow 2 | Accelerated numpy-like library with autograd support. Keras API. | |

JAX | Accelerated numpy, functional code transformations (autograd, JIT, VMAP, etc) | |

Pytorch | Similar to TF 2 | Official PyTorch tutorials |

MXNet | Similar to TF 2. Gluon API. | Dive into deep learning book |

In this section, we give some examples of CNNs using TF2. (* denotes official TF tutorials, which are not part of the pyprobml repo.)

- Dogs vs cats image classification *
- Transfer learning of a mobilenet model (trained on Imagenet) from keras to dogs vs cats classification *
- Transfer learning of a mobilenet model (trained on Imagenet) from TF-hub to flower classification *

```
In [0]:
```

```
In [0]:
```