Convolutional Neural Networks (CNN) - Translational-Equivariant CNN
- is a class of artificial neural networks, most commonly applied to analyzing images
- exploits the principle of Invariance
- used in computer vision
- inspired by Neocognitron
CNN - Intuition
- CNN - A Modular Perspective (Part 1)
- CNN - Understanding Convolutions (Part 2)
- Visualizing-and-Understanding-Convolutional-Networks-compressed.pdf
CNN - Steps
- Input Image Preprocessing (optional)
- multiple rounds of:
- Convolutional Layer (kernel/filter) - which outputs Feature Maps
- Non-Linear Activation Function (e.g. ReLU)
- Subsampling Layer (e.g. MaxPooling Layer)
- Fully Connected Layer
- Softmax Layer (for classification)
Applying Non-Linear Activation after Convolution
---cognitive-computing---machine-intelligence/ai---subfields/machine-learning-(ml)---pattern-recognition/ml---models/artificial-neural-networks-(ann)/ann---architectures/convolutional-neural-networks-(cnn)---translation/translational/shift-equivariant/equivariance/invariant/invariance-cnn/cnn-non-linear-activation-function-after-convolution.png)
Typical CNN architecture
NOT SHOWN but non-linear activation functions applied between convolutions and subsampling
---cognitive-computing---machine-intelligence/ai---subfields/machine-learning-(ml)---pattern-recognition/ml---models/artificial-neural-networks-(ann)/ann---architectures/convolutional-neural-networks-(cnn)---translation/translational/shift-equivariant/equivariance/invariant/invariance-cnn/typical-convolutional-neural-network.png)
𝑑 is the number of convolutions/filters/kernels, which will produce 𝑑 separate feature maps
After Training - Representation Learning of Convolutional Layers
---cognitive-computing---machine-intelligence/ai---subfields/machine-learning-(ml)---pattern-recognition/ml---models/artificial-neural-networks-(ann)/ann---architectures/convolutional-neural-networks-(cnn)---translation/translational/shift-equivariant/equivariance/invariant/invariance-cnn/cnn-represention-learning-in-deep-cnns.png)
CNN - Tensorflow Code Example
import tensorflow as tf
def generate_model():
model = tf.keras.Sequential([
# first convolutional layer
tf.keras.layers.Conv2D(32, filter_size=3, activation='relu'), # 32 different feature maps
tf.keras.layers.MaxPool2D(pool_size=2, strides=2),
# second convolutional layer
tf.keras.layers.Conv2D(64, filter_size=3, activation='relu'), # 64 different feature maps
tf.keras.layers.MaxPool2D(pool_size=2, strides=2),
# fully connect classifier
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(1024, activation='relu'), # 1024 nuerons
tf.keras.layers.Dense(10, activation='softmax') # 10 outputs
])
return modelSubpages
- AlexNet
- CCN - 1x1/1x1xD Convolutions
- CNN - A Modular Perspective (Part 1)
- CNN - Understanding Convolutions (Part 2)
---cognitive-computing---machine-intelligence/ai---subfields/machine-learning-(ml)---pattern-recognition/ml---models/artificial-neural-networks-(ann)/ann---architectures/convolutional-neural-networks-(cnn)---translation/translational/shift-equivariant/equivariance/invariant/invariance-cnn/cnn-spatial-arrangement-of-output-volume.png)