This repository hosts a quantized version of a feedforward neural network model, fine-tuned for gender classification tasks. The model has been optimized for efficient deployment while maintaining high accuracy, making it suitable for resource-constrained environments.
Model Details
Model Name: Gender Classifier
Model Architecture: 2-layer MLP (Multi-Layer Perceptron)
Task: Gender Classification
Dataset: Gender Classification Dataset v7
Quantization: QInt8 (Dynamic Quantization)
Framework: PyTorch
Usage
Installation
pip install torch pandas scikit-learn numpy
Loading the Quantized Model
python
1import torch
2import torch.nn as nn
3import pandas as pd
4import numpy as np
5from sklearn.preprocessing import StandardScaler, LabelEncoder
6import json
78# Define the model architecture9classGenderClassifier(nn.Module):10def__init__(self):11super().__init__()12 self.fc = nn.Sequential(13 nn.Linear(7,32),14 nn.ReLU(),15 nn.Linear(32,2)16)1718defforward(self, x):19return self.fc(x)2021# Load the quantized model22model = GenderClassifier()23quantized_model = torch.quantization.quantize_dynamic(model,{nn.Linear}, dtype=torch.qint8)24quantized_model.load_state_dict(torch.load("quantized_model/pytorch_model.bin"))2526# Load configuration27withopen("quantized_model/config.json","r")as f:28 config = json.load(f)2930# Example usage31# Prepare your input data (7 features)32input_data = np.array([[feature1, feature2, feature3, feature4, feature5, feature6, feature7]])3334# Normalize using StandardScaler (you'll need to fit this on your training data)35scaler = StandardScaler()36# scaler.fit(your_training_data) # Fit on your training data37input_normalized = scaler.transform(input_data)3839# Convert to tensor40input_tensor = torch.tensor(input_normalized, dtype=torch.float32)4142# Inference43with torch.no_grad():44 outputs = quantized_model(input_tensor)4546# Get predicted label47predicted_class = outputs.argmax(dim=1).item()4849# Map label using label encoder classes50label_mapping ={0: config["label_classes"][0],1: config["label_classes"][1]}51print(f"Predicted Gender: {label_mapping[predicted_class]}")
Performance Metrics
Model Size: Reduced through QInt8 quantization
Input Features: 7 numerical features
Output Classes: 2 (Binary gender classification)
Training Split: 80% train, 20% validation
Training Details
Dataset
The model was trained on the Gender Classification Dataset v7, featuring:
7 numerical input features
Binary gender classification labels
Preprocessed and normalized data
Training Configuration
Epochs: 10
Batch Size: 32
Learning Rate: 0.001
Optimizer: Adam
Loss Function: CrossEntropyLoss
Normalization: StandardScaler
Model Architecture
Input Layer: 7 features
Hidden Layer: 32 neurons with ReLU activation
Output Layer: 2 neurons (binary classification)
Total Parameters: Approximately 288 parameters
Quantization
Post-training dynamic quantization was applied using PyTorch's built-in quantization framework to reduce the model size and improve inference efficiency with QInt8 precision.
Repository Structure
.
├── quantized_model/
│ ├── config.json # Model configuration
│ ├── pytorch_model.bin # Quantized model weights
│ ├── model.safetensors # Alternative model format
│ ├── vocab.txt # Feature names
│ ├── tokenizer_config.json # Scaler configuration
│ └── special_tokens_map.json # Label encoder metadata
├── gender-classification.ipynb # Training notebook
└── README.md # Model documentation
Input Features
The model expects 7 numerical features as input. The exact feature names and preprocessing requirements are stored in the configuration files.
Limitations
The model is designed for binary gender classification only
Performance depends on the similarity between inference data and training data distribution
Quantization may result in minor accuracy changes compared to full-precision models
Requires proper feature scaling using StandardScaler fitted on training data
Contributing
Contributions are welcome! Feel free to open an issue or PR for improvements, fixes, or feature extensions.