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())
- Downloads last month
- 12
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social
visibility and check back later, or deploy to Inference Endpoints (dedicated)
instead.