Design and train a Small Convolutional Neural Network in Julia and FluxML that accurately classifies images into either 2 classes:
- Dog (1)
- Cat (0)
Neural Network Architecture
- Convolutional Layers: 3
- Input Feature Maps: 3
- Ouput Feature Maps: 16
- Activation: ReLU
- Pooling Layers: 3
- Kernel Size: 2x2
- Position: Directly after each Convolutional Layer
- Flattening Layer: 1
- Position: After last Pooling Layer
- Dense Layers: 3
-
$1^{st}$ nodes: 16384- Activation: ReLU
-
$2^{nd}$ nodes: 5250- Activation: Sigmoid
-
$3^{rd}$ nodes: 1
-
Hyperparameters
- Learning Rate (
$\alpha$ ): 0.01 - Momentum (
$\psi$ ): 0.0001 - Kernel Size (
$\kappa$ ): 3x3 - Stride (
$\zeta$ ): 1 - Padding (
$\rho$ ): 0 - Weight Decay (
$\lambda$ ): 0.0004 - Batch Size: 128
Training
- Loss Function: Log Cross Entropy
- Optimizer: Gradient Descent (
$\alpha$ ,$\psi$ )
Test Accuracy: 97.15%