Classification of MNIST digits by means of convolutional neural networks with character shape normalization in the pre-processing phase and data augmentation by affine transformations and addition of random noise.
The code is written using Keras deep learning library.
Used in Digit Recognizer competition on Kaggle https://www.kaggle.com/c/digit-recognizer
Layer Type | Parameters | Input Size | Output Size |
---|---|---|---|
Input | - | 28x28x1 | - |
Convolution (1) | 64 filters, kernel 5x5, padding 2 | 28x28x1 | 28x28x64 |
ReLU | - | 28x28x64 | 28x28x64 |
Convolution (2) | 128 filters, kernel 5x5, padding 2 | 28x28x64 | 28x28x128 |
ReLU | - | 28x28x128 | 28x28x128 |
MaxPooling (1) | stride 2 | 28x28x128 | 14x14x128 |
Convolution (3) | 256 filters, kernel 5x5, padding 2 | 14x14x128 | 14x14x256 |
Convolution (4) | 256 filters, kernel 3x3, padding 1 | 14x14x256 | 14x14x256 |
ReLU | - | 14x14x256 | 14x14x256 |
MaxPooling (2) | stride 2 | 14x14x256 | 7x7x256 |
Dropout | 0.2 | - | - |
Convolution (5) | 512 filters, kernel 3x3, padding 1 | 7x7x256 | 7x7x512 |
ReLU | - | - | - |
Dropout | 0.2 | - | - |
Convolution (6) | 512 filters, kernel 3x3, padding 1 | 7x7x512 | 7x7x512 |
ReLU | - | - | - |
MaxPooling (3) | stride 2 | 7x7x512 | 3x3x512 |
Dropout | 0.5 | - | - |
Fully-connected (7) | 2048 | 4608 | 2048 |
ReLU | - | - | - |
Fully-connected (8) | #classes | 2048 | #classes |
Softmax | - | - | - |