{ "model_type": "ConcatModelWithRationale", "hatebert_model": "GroNLP/HateBERT", "rationale_model": "bert-base-uncased", "training_config": { "cnn_filters": 128, "cnn_kernels": [2, 3, 4], "cnn_dropout": 0.3, "adapter_dim": 128, "max_length": 128, "num_labels": 2, "batch_size": 8, "learning_rate": 2e-5, "weight_decay": 0.05, "best_val_f1": 0.00 }, "architecture": { "temporal_cnn": "TemporalCNN (max+mean pooling)", "msa_cnn": "MultiScaleAttentionCNN (token attention pooling)", "selector": "Gumbel-Sigmoid Token Selector", "projection": "ProjectionMLP (concat CLS + CNN + rationale pooled)" }, "notes": { "trained_with": "ConcatModelWithRationale", "framework": "PyTorch + Transformers", "encoder_main": "HateBERT", "encoder_rationale": "BERT-base-uncased" } }