Text Classification
Transformers
TensorBoard
ONNX
Safetensors
PyTorch
English
bert
movie-review-sentiment
BertForSequenceClassification
Generated from Trainer
Eval Results (legacy)
text-embeddings-inference
Instructions to use arnabdhar/tinybert-imdb with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use arnabdhar/tinybert-imdb with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="arnabdhar/tinybert-imdb")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("arnabdhar/tinybert-imdb") model = AutoModelForSequenceClassification.from_pretrained("arnabdhar/tinybert-imdb", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| language: | |
| - en | |
| license: mit | |
| base_model: prajjwal1/bert-tiny | |
| tags: | |
| - pytorch | |
| - movie-review-sentiment | |
| - BertForSequenceClassification | |
| - generated_from_trainer | |
| metrics: | |
| - accuracy | |
| - matthews_correlation | |
| model-index: | |
| - name: tiny-imdb | |
| results: | |
| - task: | |
| type: text-classification | |
| metrics: | |
| - type: accuracy | |
| value: 0.8944 | |
| name: accuracy | |
| - type: accuracy | |
| value: 0.7888 | |
| name: matthews_correlation | |
| datasets: | |
| - imdb | |
| library_name: transformers | |
| pipeline_tag: text-classification | |
| <!-- This model card has been generated automatically according to the information the Trainer had access to. You | |
| should probably proofread and complete it, then remove this comment. --> | |
| # bert-tiny-imdb | |
| This model is a fine-tuned version of [prajjwal1/bert-tiny](https://huggingface.co/prajjwal1/bert-tiny) on the imdb dataset. | |
| It achieves the following results on the evaluation set: | |
| - Loss: 0.2775 | |
| - Accuracy: 0.8944 | |
| - Matthews Correlation: 0.7888 | |
| ## Model description | |
| This is the smallest version of BERT model suggested by Google in this [GitHub Repo](https://github.com/google-research/bert), this model contains 2 transformer layers and an a hidden layer output length of 128, ie __(L=2, H=128)__. There are a total 4.39 million paramteres in the model. | |
| ## Intended uses & limitations | |
| This model should be used for text classification tasks specifically on movie reviews or other such text data. Also you can use this model for other downstream tasks like: | |
| - Sentiment Analysis | |
| - Named Entity Recognition or Token Classification | |
| This model should not be used for any tasks other than the above mentioned or any language other than English. | |
| ### How to use the Model | |
| __Pytorch Model__ | |
| ```python | |
| from transformers import pipeline | |
| # load pipeline | |
| tiny_bert = pipeline("text-classification", "arnabdhar/tinybert-imdb") | |
| # perform inference | |
| results = pipeline(input_text, truncation=True, max_length=128) | |
| ``` | |
| __ONNX Model__ | |
| ```python | |
| from transformers import AutoTokenizer, pipeline | |
| from optimum.onnxruntime import ORTModelForSequenceClassification | |
| # load tokenizer & model | |
| model_name = "arnabdhar/tinybert-imdb" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| onnx_model = ORTModelForSequenceClassification.from_pretrained(model_name) | |
| # build pipeline | |
| tiny_bert_onnx = pipeline( | |
| task = "text-classification", | |
| tokenizer = tokenizer, | |
| model = onnx_model | |
| ) | |
| # perform inference | |
| results = tiny_bert_onnx(input_text, truncation=True, max_length=128) | |
| ``` | |
| ## Training | |
| The model was finetuned on Google Colab using the NVIDIA V100 GPU and was trained for 9 epochs, it took around 12 minutes to finish finetuning. | |
| This model has been trained on the [imdb](https://huggingface.co/datasets/imdb) dataset which has 25,000 data text data for each training set and testing set, but I have combined both the partitions and then split the dataset in 80:20 ratio and used it for finetuning. This approach gave me a larger dataset to finetune the model. | |
| ### Training hyperparameters | |
| The following hyperparameters were used during training: | |
| - learning_rate: 5e-05 | |
| - train_batch_size: 32 | |
| - eval_batch_size: 320 | |
| - seed: 42 | |
| - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 | |
| - lr_scheduler_type: cosine | |
| - lr_scheduler_warmup_ratio: 0.1 | |
| - num_epochs: 9 | |
| ### Training results | |
| | Training Loss | Epoch | Step | Validation Loss | Accuracy | Matthews Correlation | | |
| |:-------------:|:-----:|:-----:|:---------------:|:--------:|:--------------------:| | |
| | 0.4927 | 1.0 | 1250 | 0.3557 | 0.8484 | 0.7016 | | |
| | 0.298 | 2.0 | 2500 | 0.2874 | 0.8866 | 0.7732 | | |
| | 0.2555 | 3.0 | 3750 | 0.2799 | 0.8912 | 0.7828 | | |
| | 0.2132 | 4.0 | 5000 | 0.2775 | 0.8944 | 0.7888 | | |
| | 0.1779 | 5.0 | 6250 | 0.3065 | 0.891 | 0.7835 | | |
| | 0.1508 | 6.0 | 7500 | 0.3331 | 0.889 | 0.7811 | | |
| | 0.1304 | 7.0 | 8750 | 0.3451 | 0.8926 | 0.7870 | | |
| | 0.119 | 8.0 | 10000 | 0.3670 | 0.8915 | 0.7852 | | |
| | 0.1118 | 9.0 | 11250 | 0.3655 | 0.891 | 0.7840 | | |
| ### Framework versions | |
| - Transformers 4.35.2 | |
| - Pytorch 2.1.0+cu118 | |
| - Datasets 2.15.0 | |
| - Tokenizers 0.15.0 |