Taking the Coursera Deep Learning Specialization, **Convolutional Neural Networks** course. Will post condensed notes every week as part of the review process. All material originates from the free Coursera course, taught by Andrew Ng. See deeplearning.ai for more details.

# Table of Contents

# Foundations of Convolutional Neural Networks

## Convolutional Neural Networks

### Computer Vision

- image classification
- object detection in images
- neural network style transfer

### Edge Detection Example

Convolution is when you ‘map’ a kernel or filter matrix over your original matrix. Starting from the top left, element multiply the filter with the original matrix. Add all of these new elements.

### More Edge Detection

Can use other types of filters.

You can make the neural network learn about the filter through backpropagation by treating the filter as a bunch of parameters to be learned.

### Padding

- padding solves shrinking output and underutiliziation of edge and corner pixels
- basically add a border to your images.

- typically pad values are 0
- In above example, padding $p=1$.

$$ n + 2p - f + 1 \text{ by } n + 2p - f + 1 $$

How much to pad? **Valid and Same convolutions.**

- “Valid”: $ (n * n) \text{ convlution } (f * f) \rightarrow (n - f + 1 * n - f + 1) $
- “Same” Pad so that the output size is the same as the input size.

$$ (n + 2p - f + 1 * n + 2p - f + 1) $$ $ p = \dfrac{f-1}{2} $ $f$ is usually odd.

### Strided Convolutions

- striding is the act of skipping over a number of cells during convolution.
- default case is stride of 1, where you move the filter one cell at a time.

- in the case that the stride puts the filter such that it hangs off of the original dimensions, convention is we simply don’t use apply it. (round down)

### Convolutions Over Volume

- Same operation as a single layer convolution, except both the filter and the input now have multiple channels.

- each cell of filter, multiply by each cell of input. output is the sum of all these values.
- That is how a 6x6x3 * 3x3x3 becomes a 4x4x1.

- To handle multiple filters, you simply stack the results together.

### One Layer of a Convolutional Network

- bias for convolutional layer is always a real number

### Simple Convolutional Network Example

### Pooling Layers

- can also do averages
- for multiple layers, simply apply the same operation on the said layer
- nothing to learn (no parameters)

### CNN Example

- example inspired by LeNet5

## Why Convolutions?

- Convolutions allow you to reduce the number of parameters to train
- Parameter Sharing
- parameters are shared across the entire input

- Sparsity of Connections
- each output value depend on a small number of input values