metadata
language: en
tags:
- exbert
license: mit
datasets:
- bookcorpus
- wikipedia
- glue
Glue-Bert
Este modelo es un bert-base-uncased
ajustado con el dataset glue
de MRPC.
Este es el c贸digo utilizado para realizar el ajuste:
# importamos las librerias
from datasets import load_dataset
from transformers import (AutoTokenizer,
AutoModelForSequenceClassification,
DataCollatorWithPadding,
Trainer,
TrainingArguments
)
from sklearn.metrics import accuracy_score, f1_score
# cargamos el dataset
glue_dataset = load_dataset('glue', 'mrpc')
# definimos el modelo
modelo = 'bert-base-uncased'
# iniciamos el tokenizador, con este objeto se vectorizan las palabras
tokenizador = AutoTokenizer.from_pretrained(modelo)
# iniciamos el modelo BERT
modelo_bert = AutoModelForSequenceClassification.from_pretrained(modelo, num_labels=2)
# tokenizar el dataset
token_dataset = glue_dataset.map(lambda x: tokenizador(x['sentence1'], x['sentence2'], truncation=True), batched=True)
# iniciamos el data collator
data_collator = DataCollatorWithPadding(tokenizer=tokenizador)
# funci贸n evaluaci贸n
def evaluacion(modelo_preds):
"""
Funci贸n para obtener la m茅tricas de evaluaci贸n.
Params:
+ modelo_preds: transformers.trainer_utils.PredictionOutput, predicciones del modelo y etiquetas.
Return:
dict: diccionario con keys accuracy y f1-score y sus valores respectivos.
"""
preds, etiquetas = modelo_preds
preds = np.argmax(preds, axis=-1)
return {'accuracy': accuracy_score(preds, etiquetas),
'f1': f1_score(preds, etiquetas)}
# iniciamos los argumentos del entrenador
args_entrenamiento = TrainingArguments(output_dir='../../training/glue-trainer',
evaluation_strategy='steps',
logging_steps=100,
)
# iniciamos el entrenador
entrenador = Trainer(model=modelo_bert,
args=args_entrenamiento,
train_dataset=token_dataset['train'],
eval_dataset=token_dataset['validation'],
data_collator=data_collator,
tokenizer=tokenizador,
compute_metrics=evaluacion
)
# entrenamiento
entrenador.train()
# evaluaci贸n desde el entrenador
print(entrenador.evaluate())