- [[Convolution Layer]]
- [[Pooling Layer]]
- [[Padding]]
- [[Stride]]
- [[3D Convolutional Neural Networks]]
## General
---
- uses [[Convolution Layer|Convolution Layers]], [[Pooling Layer|Pooling Layers]], & fully connected [[Deep Learning|Neural Networks]]
- FC layers are added at end of CNN
- in general, dimensions for width & height will decrease & channels will increase as you get deeper in a CNN
- most of the learnable parameters often are in the FC layers at the end
## Motivation
---
#### Computational Resource Efficiency:
- images can get really big
- 1000 x 1000 x 3 = 3 million pixels
- this makes computation very difficult, & requires lots of data
- to be able to work with larger images, we use the [[Convolution|Convolution Operator]]
- note that # of parameters (i.e weight & bias), are not dependent on the input, unlike a vanilla [[Deep Learning|Neural Network]]
- so you can have huge images for inputs without a huge increase in parameters
#### Parameter Sharing:
- a feature detector is useful in different parts of the image
- a single filter's learnable parameters scan across the entire image
- as mentioned above, # parameters is not dependent on input, so you have huge savings in computational resources
#### Sparsity of Connections:
- for each output value in the output matrix, the value only depends on a small amount of the input
- i.e only a small square of the input image matters for the output (the square scanned by the filter)
- whereas in a vanilla [[Deep Learning|Neural Network]] each output value is connected to every single input value