- [[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