--- language: en license: apache-2.0 base_model: distilbert-base-uncased tags: - text-classification - emotion-detection - distilbert - pytorch - safetensors datasets: - dair-ai/emotion metrics: - accuracy - f1 --- # DistilBERT Emotion Detection — FP32 Fine-tuned version of DistilBERT for 6-class emotion classification using the [dair-ai/emotion](https://huggingface.co/datasets/dair-ai/emotion) dataset. ## Model Performance | Format | Accuracy | F1 Macro | |----------|----------|----------| | FP32 | 92.50% | 0.8799 | | INT8* | 91.95% | 0.8659 | *INT8 is applied at runtime via `quantize_dynamic` — see usage below. ## Labels | ID | Emotion | |----|----------| | 0 | sadness | | 1 | joy | | 2 | love | | 3 | anger | | 4 | fear | | 5 | surprise | ## Usage (CPU — recommended) ```python import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification repo_id = "Sukuna404/distilbert-emotion-fp32" tokenizer = AutoTokenizer.from_pretrained(repo_id) model = AutoModelForSequenceClassification.from_pretrained(repo_id) # Optional: apply INT8 quantization at runtime for faster CPU inference model = torch.quantization.quantize_dynamic( model, {torch.nn.Linear}, dtype=torch.qint8 ) model.eval() model.cpu() def predict(text: str) -> str: inputs = tokenizer(text, return_tensors="pt", truncation=True, padding="longest") with torch.no_grad(): outputs = model(**inputs) pred_id = outputs.logits.argmax().item() return model.config.id2label[pred_id] print(predict("I am so happy today!")) # joy print(predict("I am really angry!")) # anger ``` ## Limitations - English only - 6 emotion classes only