Instructions to use akinoshi/mnist-framework-backoff with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use akinoshi/mnist-framework-backoff with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://akinoshi/mnist-framework-backoff") - Notebooks
- Google Colab
- Kaggle
MNIST Framework Bake-off Models
Model Details
This repository contains pre-trained model weights for handwritten digit classification (0-9) trained on the MNIST dataset. It was developed as part of an end-to-end MLOps and framework benchmarking portfolio project.
Three distinct architectures are hosted here to demonstrate the trade-offs between deep learning and classical machine learning on spatial data:
- CNN (PyTorch & TensorFlow) (
pytorch_cnn_weights.pth,tf_cnn_model.keras): A Convolutional Neural Network designed for high accuracy and $O(1)$ inference latency. - Random Forest Classifier (Scikit-Learn) (
sklearn_rf.joblib): A baseline classical Machine Learning architecture to establish performance bounds before applying deep learning. - Soft-Voting Ensemble (Scikit-Learn) (
sklearn_ensemble.joblib): An ensemble combining a Multi-Layer Perceptron (MLP) and a K-Nearest Neighbors (K-NN) classifier.
- Developed by: AKinoshi
- Model Date: July 2026
- Model Type: Image Classification
- License: MIT
Intended Use
- Primary Use Case: Educational benchmarking and portfolio demonstration of framework agility and model deployment.
- Out-of-Scope: This model is trained exclusively on cleanly centered, 28x28 grayscale digits. It is not intended for general-purpose Optical Character Recognition (OCR) on real-world, noisy documents or alphabetic text.
Training Data
The models were trained on the MNIST dataset, which consists of 70,000 images of handwritten digits normalized to fit into a 28x28 pixel bounding box and anti-aliased.
- Preprocessing (PyTorch / TensorFlow): Pixel values normalized to a range of [-1, 1] or [0, 1] with an explicit channel dimension added.
- Preprocessing (Scikit-Learn): MinMax scaling applied to flatten 1D arrays, scaling intensities from [0, 255] down to [0, 1].
Evaluation Metrics
Models were evaluated using Accuracy and a detailed classification report (Precision, Recall, F1-Score) on a 20% holdout test set.
- CNN: ~99.08% Test Accuracy. Demonstrates excellent spatial feature extraction through convolutional filters.
- Random Forest Classifier: ~96.75% Test Accuracy. Fast CPU training, but loses spatial hierarchy due to image flattening.
- Scikit-Learn Ensemble: ~98.33% Test Accuracy. While highly accurate, the K-NN component introduces significant inference latency $O(N \times D)$, making it less suitable for real-time production endpoints compared to the compiled CNN.
How to Get Started with the Model
You can dynamically download these weights directly into your Python scripts using the huggingface_hub library.
# pip install huggingface_hub torch
import torch
from huggingface_hub import hf_hub_download
# 1. Download the PyTorch weights (caches automatically)
model_path = hf_hub_download(
repo_id="AKinoshi/mnist-framework-bakeoff",
filename="pytorch_cnn_weights.pth"
)
# 2. Load into your PyTorch architecture
# model = DigitClassifierCNN()
# model.load_state_dict(torch.load(model_path, map_location=torch.device('cpu')))
# model.eval()
- Downloads last month
- 18