This is my version of inception net for mnist. I use keras with tensorflow for this project. It was created as part of a competition between friends (I won with the lowest categorical crossentropy). I created this architecture after the one detailed in Going Deeper with Convolutions. Major changes made include downscaling, simplifying kernel sizes, and adding Batch Normalization. I also use this snapshot ensembles object (thanks, Somshubra Majumdar!).
Results gained after approx. 24 hours of training on a NVIDIA GTX 1060 6GB GPU. Some of these results are without ensembling. No data augmentation is used.
ensemble
Test loss (categorical crossentropy): 0.0100604627563
error: 0.330001115799%
individual
Test loss: 0.0148106931992
error: 0.34%
individual
Test loss: 0.0129321537635
error: 0.34%
individual
Test loss: 0.0130156670398
error: 0.34%
from mniny_inception_net import train
run = 0
while True:
train(run)
run += 1
from mniny_inception_module import evaluate_ensemble
# To evaluate ensemble of all models in weights folder:
evaluate_ensemble(Best=False)
# To evaluate ensemble of best models per training session:
evaluate_ensemble()
from mniny_inception_module import evaluate
#Evaluate all models in weights directory:
evaluate(eval_all=True)
# Evaluate 'Best' models in weights directory:
evaluate()
- Tensorflow
- Keras
- Install Anaconda
pip install tensorflow-gpu keras