bert-tiny-sst2 / README.md
VityaVitalich's picture
Update README.md
2e14b76
metadata
base_model: M-FAC/bert-tiny-finetuned-sst2
tags:
  - generated_from_trainer
datasets:
  - sst2
metrics:
  - accuracy
model-index:
  - name: results
    results:
      - task:
          name: Text Classification
          type: text-classification
        dataset:
          name: sst2
          type: sst2
          config: default
          split: validation
          args: default
        metrics:
          - name: Accuracy
            type: accuracy
            value: 0.8279816513761468

Bert Tiny for SST2

This model is a fine-tuned version of M-FAC/bert-tiny-finetuned-sst2 on the sst2 dataset. It achieves the following results on the evaluation set:

  • Loss: 0.4771
  • Accuracy: 0.8280

Usage Example

from transformers import BertTokenizer, BertForSequenceClassification, TrainingArguments, Trainer, DataCollatorWithPadding
import datasets

model = BertForSequenceClassification.from_pretrained('VityaVitalich/bert-tiny-sst2')
tokenizer = BertTokenizer.from_pretrained('VityaVitalich/bert-tiny-sst2')

def create_data(tokenizer):
  train_set = datasets.load_dataset('sst2', split='train').remove_columns(['idx'])
  val_set = datasets.load_dataset('sst2', split='validation').remove_columns(['idx'])

  def tokenize_func(examples):
      return tokenizer(examples["sentence"], max_length=128, padding='max_length', truncation=True)

  encoded_dataset_train = train_set.map(tokenize_func, batched=True)
  encoded_dataset_test = val_set.map(tokenize_func, batched=True)
  data_collator = DataCollatorWithPadding(tokenizer)
  return encoded_dataset_train, encoded_dataset_test, data_collator

encoded_dataset_train, encoded_dataset_test, data_collator = create_data(tokenizer)

training_args = TrainingArguments(
    output_dir='./results',
    learning_rate=3e-5,
    per_device_train_batch_size=128,
    per_device_eval_batch_size=128,
    load_best_model_at_end=True,
    num_train_epochs=5,
    weight_decay=0.1,
    fp16=True,
    fp16_full_eval=True,
    evaluation_strategy="epoch",
    seed=42,
    save_strategy = "epoch",
    save_total_limit=5,
    logging_strategy="epoch",
    report_to="all",
)


trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=encoded_dataset_train,
    eval_dataset=encoded_dataset_test,
    data_collator=data_collator,
    compute_metrics=compute_metrics,
)

trainer.evaluate(encoded_dataset_test)

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 3e-05
  • train_batch_size: 128
  • eval_batch_size: 128
  • seed: 42
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • num_epochs: 5

Training results

Training Loss Epoch Step Validation Loss Accuracy
0.2313 1.0 527 0.4771 0.8280
0.2057 2.0 1054 0.4937 0.8257
0.1949 3.0 1581 0.5121 0.8177
0.1904 4.0 2108 0.5100 0.8200
0.1879 5.0 2635 0.5137 0.8211

Framework versions

  • Transformers 4.34.0.dev0
  • Pytorch 2.0.1+cu117
  • Datasets 2.14.5
  • Tokenizers 0.14.0