YonatanRA
commited on
Commit
•
d9f4355
1
Parent(s):
0c317c7
readme
Browse files
README.md
CHANGED
@@ -1,3 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
license: mit
|
3 |
---
|
|
|
1 |
+
Este modelo es un `bert-base-uncased` ajustado con el dataset `glue` de MRPC.
|
2 |
+
Este es el código utilizado para realizar el ajuste:
|
3 |
+
|
4 |
+
|
5 |
+
|
6 |
+
```python
|
7 |
+
# importamos las librerias
|
8 |
+
from datasets import load_dataset
|
9 |
+
|
10 |
+
from transformers import (AutoTokenizer,
|
11 |
+
AutoModelForSequenceClassification,
|
12 |
+
DataCollatorWithPadding,
|
13 |
+
Trainer,
|
14 |
+
TrainingArguments
|
15 |
+
)
|
16 |
+
|
17 |
+
from sklearn.metrics import accuracy_score, f1_score
|
18 |
+
|
19 |
+
|
20 |
+
|
21 |
+
# cargamos el dataset
|
22 |
+
glue_dataset = load_dataset('glue', 'mrpc')
|
23 |
+
|
24 |
+
|
25 |
+
# definimos el modelo
|
26 |
+
modelo = 'bert-base-uncased'
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
# iniciamos el tokenizador, con este objeto se vectorizan las palabras
|
31 |
+
tokenizador = AutoTokenizer.from_pretrained(modelo)
|
32 |
+
|
33 |
+
|
34 |
+
# iniciamos el modelo BERT
|
35 |
+
modelo_bert = AutoModelForSequenceClassification.from_pretrained(modelo, num_labels=2)
|
36 |
+
|
37 |
+
|
38 |
+
# tokenizar el dataset
|
39 |
+
token_dataset = glue_dataset.map(lambda x: tokenizador(x['sentence1'], x['sentence2'], truncation=True), batched=True)
|
40 |
+
|
41 |
+
|
42 |
+
|
43 |
+
# iniciamos el data collator
|
44 |
+
data_collator = DataCollatorWithPadding(tokenizer=tokenizador)
|
45 |
+
|
46 |
+
|
47 |
+
# función evaluación
|
48 |
+
def evaluacion(modelo_preds):
|
49 |
+
|
50 |
+
"""
|
51 |
+
Función para obtener la métricas de evaluación.
|
52 |
+
|
53 |
+
Params:
|
54 |
+
+ modelo_preds: transformers.trainer_utils.PredictionOutput, predicciones del modelo y etiquetas.
|
55 |
+
|
56 |
+
Return:
|
57 |
+
dict: diccionario con keys accuracy y f1-score y sus valores respectivos.
|
58 |
+
"""
|
59 |
+
|
60 |
+
preds, etiquetas = modelo_preds
|
61 |
+
|
62 |
+
preds = np.argmax(preds, axis=-1)
|
63 |
+
|
64 |
+
return {'accuracy': accuracy_score(preds, etiquetas),
|
65 |
+
'f1': f1_score(preds, etiquetas)}
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
# iniciamos los argumentos del entrenador
|
70 |
+
args_entrenamiento = TrainingArguments(output_dir='../../training/glue-trainer',
|
71 |
+
evaluation_strategy='steps',
|
72 |
+
logging_steps=100,
|
73 |
+
)
|
74 |
+
|
75 |
+
|
76 |
+
# iniciamos el entrenador
|
77 |
+
entrenador = Trainer(model=modelo_bert,
|
78 |
+
args=args_entrenamiento,
|
79 |
+
train_dataset=token_dataset['train'],
|
80 |
+
eval_dataset=token_dataset['validation'],
|
81 |
+
data_collator=data_collator,
|
82 |
+
tokenizer=tokenizador,
|
83 |
+
compute_metrics=evaluacion
|
84 |
+
)
|
85 |
+
|
86 |
+
# entrenamiento
|
87 |
+
entrenador.train()
|
88 |
+
|
89 |
+
|
90 |
+
# evaluación desde el entrenador
|
91 |
+
print(entrenador.evaluate())
|
92 |
+
```
|
93 |
+
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
---
|
98 |
license: mit
|
99 |
---
|