Hybrid Deep Learning system combining Autoencoder-based feature learning with classification on Fashion-MNIST, demonstrating improved accuracy over raw pixel models.
This project builds a hybrid deep learning pipeline that combines:
- Unsupervised learning (Autoencoder) for feature extraction
- Supervised learning (Classifier) for prediction
The core idea is to show that latent features learned by an autoencoder improve classification accuracy compared to raw pixel inputs.
- Train a convolutional autoencoder to learn compact representations
- Extract latent features from the encoder
- Train a classifier using these features
- Compare performance with a raw pixel baseline
- Visualize results (loss, reconstruction, confusion matrix, latent space)
Capstone-Project/
│
├── data/
├── models/
│ ├── autoencoder.pt
│ ├── classifier.pt
│
├── src/
│ ├── data.py
│ ├── preprocess.py
│ ├── autoencoder.py
│ ├── classifier.py
│ ├── raw_classifier.py
│ ├── train_autoencoder.py
│ ├── train_classifier.py
│ ├── evaluate.py
│ ├── visualize.py
│
├── notebooks/
├── outputs/
│ ├── loss_curve.png
│ ├── reconstruction.png
│ ├── confusion_matrix.png
│ ├── latent_space.png
│
├── config.py
├── main.py
├── requirements.txt
├── README.md
├── report.pdf
- Fashion-MNIST (via
torchvision.datasets) - 70,000 grayscale images (28×28)
- 10 classes (clothing categories)
- Load and preprocess dataset
- Train convolutional autoencoder
- Extract latent features (encoder output)
- Train classifier on latent features
- Train baseline classifier on raw pixels
- Evaluate and compare performance
- Generate visualizations
- Conv2D → Conv2D → Latent (32) → Deconv → Deconv
- Loss: MSE
- Fully connected network
- Input: latent features
- Loss: Cross-Entropy
- Classifier trained on raw pixels (for comparison)
| Model | Accuracy |
|---|---|
| Raw Pixel Classifier | ~0.82 |
| Autoencoder Features | ~0.88 |
Conclusion: Learned features improve classification performance.
- Training loss curves
- Reconstruction (original vs reconstructed)
- Confusion matrix
- Latent space (PCA)
- Class distribution
All outputs are saved in the outputs/ folder.

Hyperparameters are defined in config.py:
- Batch Size
- Learning Rate
- Epochs
- Latent Dimension
pip install -r requirements.txtpython main.py- Autoencoder removes redundancy and learns meaningful features
- Latent space shows clear class separation
- Hybrid approach improves generalization
- Limited training epochs
- Simple architecture
- Dataset is relatively small
- Variational Autoencoder (VAE)
- Larger datasets (CIFAR-10/100, ImageNet)
- Transfer learning
- Deployment (Flask / Streamlit)