Skip to content

Convolutional Neural Network designed in Julia and FluxML to classify input in 2 classes (Dog or Cat)

Notifications You must be signed in to change notification settings

JohnnyBravo02/CNN_Binary_Image_Classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

CNN_Binary_Image_Classification

Goal

Design and train a Small Convolutional Neural Network in Julia and FluxML that accurately classifies images into either 2 classes:

  • Dog (1)
  • Cat (0)

Design

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$)

Training Metrics

Loss Log

At Last Epoch

Training Loss: 0.1

Validation Loss: 0.1

Screenshot 2023-11-23 174355

Accuracy Log

At Last Epoch

Training Accuracy: 97.07

Validation Accuracy: 97.1

Screenshot 2023-11-23 174342

Test

Test Accuracy: 97.15%

About

Convolutional Neural Network designed in Julia and FluxML to classify input in 2 classes (Dog or Cat)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages