File size: 3,470 Bytes
3e5b68a c40ac66 2c7aee7 b12001e c40ac66 4b792b4 c40ac66 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
---
datasets:
- snli
- multi_nli
metrics:
- accuracy
- f1
- precision
- recall
inference: false
model-index:
- name: distilroberta-nli
results:
- task:
type: text-classification
name: Text Classification
metrics:
- type: loss
value: 0.438475
- type: accuracy
value: 0.829536
name: Accuracy
- type: f1
value: 0.828703
name: F1
- type: precision
value: 0.828907
name: Precision
- type: recall
value: 0.828617
name: Recall
language:
- en
---
## DistilRoBERTa-NLI
This model utilizes the [Distilroberta base](https://huggingface.co/distilroberta-base) architecture, which has been fine-tuned for NLI tasks on the [MultiNLI](https://huggingface.co/datasets/multi_nli) and [SNLI](https://huggingface.co/datasets/snli) datasets.
It achieves the following results on the evaluation set:
* Loss: 0.4384
* Accuracy: 0.8295
## Model description
The SNLI corpus (version 1.0) is a collection of 570k human-written English sentence pairs manually labeled for balanced classification with the labels entailment, contradiction, and neutral, supporting the task of natural language inference (NLI), also known as recognizing textual entailment (RTE).
The Multi-Genre Natural Language Inference (MultiNLI) corpus is a crowd-sourced collection of 433k sentence pairs annotated with textual entailment information. The corpus is modeled on the SNLI corpus, but differs in that covers a range of genres of spoken and written text, and supports a distinctive cross-genre generalization evaluation.
## Usage
Inference API has been disabled as it is not suitable for this kind of task.
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Load model and tokenizer
model_checkpoint = 'AdamCodd/distilroberta-NLI'
model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint)
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
# Set device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
# Sample premise and hypothesis
premise = "The cat is sleeping under the sun."
hypothesis = "It's raining, and the cat is getting wet."
# Tokenize and predict
input = tokenizer(premise, hypothesis, truncation=True, padding=True, return_tensors="pt").to(device)
with torch.no_grad():
output = model(**input)
probabilities = torch.softmax(output.logits, dim=-1)[0].tolist()
# Output prediction
label_names = ["Entailment", "Neutral", "Contradiction"]
prediction = {name: round(prob * 100, 1) for name, prob in zip(label_names, probabilities)}
print(prediction)
# {'Entailment': 1.3, 'Neutral': 8.2, 'Contradiction': 90.5}
```
## Training and evaluation data
More information needed
## Training procedure
### Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 3e-05
- train_batch_size: 32
- eval_batch_size: 32
- seed: 42
- optimizer: AdamW with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: linear
- lr_scheduler_warmup_steps: 150
- num_epochs: 1
- weight_decay: 0.01
### Training results
Metrics: Accuracy, F1, Precision, Recall
```
'eval_loss': 0.438475,
'eval_accuracy': 0.829536,
'eval_f1': 0.828703,
'eval_precision': 0.828907,
'eval_recall': 0.828617
```
### Framework versions
- Transformers 4.36.0
- Datasets 2.15.0
- Tokenizers 0.15.0
If you want to support me, you can [here](https://ko-fi.com/adamcodd). |