|
--- |
|
license: apache-2.0 |
|
base_model: distilbert-base-uncased |
|
tags: |
|
- generated_from_trainer |
|
datasets: |
|
- imdb |
|
model-index: |
|
- name: distilbert-base-uncased-finetuned-imdb |
|
results: [] |
|
language: |
|
- en |
|
metrics: |
|
- perplexity |
|
--- |
|
|
|
# distilbert-base-uncased-finetuned-imdb-v2 |
|
|
|
This model is a fine-tuned version of [distilbert-base-uncased](https://huggingface.co/distilbert-base-uncased) on the imdb dataset. |
|
It achieves the following results on the evaluation set: |
|
- Loss: 2.3033 |
|
|
|
## Model description |
|
|
|
This model is a fine-tuned version of DistilBERT base uncased on the IMDb dataset. It was trained to predict the next word in a sentence using masked language modeling. The model has been fine-tuned to adapt to the language patterns and sentiment present in movie reviews. |
|
|
|
## Intended uses & limitations |
|
|
|
This model is primarily designed for the fill-mask task, a type of language modeling where the model is trained to predict missing words within a given context. It excels at completing sentences or phrases by predicting the most likely missing word based on the surrounding text. This functionality makes it valuable for a wide range of natural language processing tasks, such as generating coherent text, improving auto-completion in writing applications, and enhancing conversational agents' responses. However, it may have limitations in handling domain-specific language or topics not present in the IMDb dataset. Additionally, it may not perform well on languages other than English. |
|
|
|
## Training and evaluation data |
|
|
|
The model was trained on a subset of the IMDb dataset, containing 40,000 reviews for fine-tuning. The evaluation was conducted on a separate test set of 6,000 reviews. |
|
|
|
## Training procedure |
|
|
|
### Training hyperparameters |
|
|
|
The following hyperparameters were used during training: |
|
- learning_rate: 2e-05 |
|
- train_batch_size: 64 |
|
- eval_batch_size: 64 |
|
- seed: 42 |
|
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 |
|
- lr_scheduler_type: linear |
|
- num_epochs: 3 |
|
|
|
### Training results |
|
|
|
| Training Loss | Epoch | Step | Validation Loss | |
|
|:-------------:|:-----:|:----:|:---------------:| |
|
| 2.4912 | 1.0 | 625 | 2.3564 | |
|
| 2.4209 | 2.0 | 1250 | 2.3311 | |
|
| 2.4 | 3.0 | 1875 | 2.3038 | |
|
|
|
|
|
### Framework versions |
|
|
|
- Transformers 4.31.0 |
|
- Pytorch 2.0.1+cu118 |
|
- Datasets 2.14.4 |
|
- Tokenizers 0.13.3 |
|
|
|
## How to use |
|
|
|
```python |
|
import torch |
|
import pandas as pd |
|
from transformers import AutoTokenizer, AutoModelForMaskedLM |
|
|
|
# Load the tokenizer and model |
|
tokenizer = AutoTokenizer.from_pretrained("Francesco-A/distilbert-base-uncased-finetuned-imdb-v2") |
|
model = AutoModelForMaskedLM.from_pretrained("Francesco-A/distilbert-base-uncased-finetuned-imdb-v2") |
|
|
|
# Example sentence |
|
sentence = "This movie is really [MASK]." |
|
|
|
# Tokenize the sentence |
|
inputs = tokenizer(sentence, return_tensors="pt") |
|
|
|
# Get the model's predictions |
|
with torch.no_grad(): |
|
outputs = model(**inputs) |
|
|
|
# Get the top-k predicted tokens and their probabilities |
|
k = 5 # Number of top predictions to retrieve |
|
masked_token_index = inputs["input_ids"].tolist()[0].index(tokenizer.mask_token_id) |
|
predicted_token_logits = outputs.logits[0, masked_token_index] |
|
topk_values, topk_indices = torch.topk(torch.softmax(predicted_token_logits, dim=-1), k) |
|
|
|
# Convert top predicted token indices to words |
|
predicted_tokens = [tokenizer.decode(idx.item()) for idx in topk_indices] |
|
# Convert probabilities to Python floats |
|
probs = topk_values.tolist() |
|
|
|
# Create a DataFrame to display the top predicted words and probabilities |
|
data = { |
|
"Predicted Words": predicted_tokens, |
|
"Probability": probs, |
|
} |
|
|
|
df = pd.DataFrame(data) |
|
|
|
# Display the DataFrame |
|
df |
|
|
|
``` |