Views
No views yet
1from transformers import BertTokenizer, BertForSequenceClassification, TrainingArguments, Trainer, DataCollatorWithPadding
2import datasets
3
4model = BertForSequenceClassification.from_pretrained('VityaVitalich/bert-tiny-sst2')
5tokenizer = BertTokenizer.from_pretrained('VityaVitalich/bert-tiny-sst2')
6
7def create_data(tokenizer):
8 train_set = datasets.load_dataset('sst2', split='train').remove_columns(['idx'])
9 val_set = datasets.load_dataset('sst2', split='validation').remove_columns(['idx'])
10
11 def tokenize_func(examples):
12 return tokenizer(examples["sentence"], max_length=128, padding='max_length', truncation=True)
13
14 encoded_dataset_train = train_set.map(tokenize_func, batched=True)
15 encoded_dataset_test = val_set.map(tokenize_func, batched=True)
16 data_collator = DataCollatorWithPadding(tokenizer)
17 return encoded_dataset_train, encoded_dataset_test, data_collator
18
19encoded_dataset_train, encoded_dataset_test, data_collator = create_data(tokenizer)
20
21training_args = TrainingArguments(
22 output_dir='./results',
23 learning_rate=3e-5,
24 per_device_train_batch_size=128,
25 per_device_eval_batch_size=128,
26 load_best_model_at_end=True,
27 num_train_epochs=5,
28 weight_decay=0.1,
29 fp16=True,
30 fp16_full_eval=True,
31 evaluation_strategy="epoch",
32 seed=42,
33 save_strategy = "epoch",
34 save_total_limit=5,
35 logging_strategy="epoch",
36 report_to="all",
37)
38
39
40trainer = Trainer(
41 model=model,
42 args=training_args,
43 train_dataset=encoded_dataset_train,
44 eval_dataset=encoded_dataset_test,
45 data_collator=data_collator,
46 compute_metrics=compute_metrics,
47)
48
49trainer.evaluate(encoded_dataset_test)| 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 |