# Amharic Character Classifier
A single notebook that walks through building and comparing Convolutional Neural Networks for the 237-class Amharic character recognition task using both TensorFlow and PyTorch.
## Overview
- Demonstrates an end-to-end workflow: data preparation, modeling, training, and evaluation of both frameworks.
- Provides insight into how TensorFlow and PyTorch handle the same dataset and architecture, highlighting minor differences in their training behavior.
- Records metrics beyond accuracy (Macro / Weighted F1) and surfaces per-class performance to reveal imbalanced or visually confusing character groups.
## Data
| Attribute | Details |
|-----------|---------|
| Instances | 37,652 grayscale character images |
| Classes | 237 unique Amharic characters |
| Input size | 64 × 64 pixels |
| Normalization | Pixel values scaled to the [0, 1] range |
| Train / Validation / Test | 70% / 15% / 15% |
The notebook expects a pre-extracted dataset folder. The original archive is stored on Google Drive as `uni_dataset.rar` and is extracted into `/content/uni_dataset/` inside Colab.
The repository also tracks `uni_dataset.zip`, a compressed version of the same 37,652 Amharic character images that the notebook classifies. You can unzip it locally and point the notebook’s data loaders to the extracted folder instead of downloading from Drive.
## Pipeline Highlights
1. Mount Google Drive and install `unrar` to extract the dataset (see the first cells in the notebook).
2. Standardize the images into tensors/arrays for TensorFlow and PyTorch loaders.
3. Define matching CNNs in each framework with convolutional layers, ReLU activations, max pooling, dense blocks, and a softmax output layer for 237 classes.
4. Train both models, track loss/accuracy curves, and compute confusion-aware metrics such as Macro F1 and Weighted F1 to gauge performance on rare characters.
5. Visualize class-wise performance to expose difficult characters, overfitting trends, and pote …