No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Carga de modelo de PyTorch con torch.load()

23/24
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para poder hacer inferencia con el nuevo modelo faltaron algunos detalles:
|
Es necesario guardar el archivo de vocabulario para usarlo en el nuevo entorno.

# guardar vocabulario creado con el dataset
torch.save(vocab, 'vocab.pt')

#carga del vocabulario:
vocab = torch.load('vocab.pt')

E importar el tokenizador con el que fue creado para definir el text_pipeline

from torchtext.data.utils import get_tokenizer

tokenizer = get_tokenizer("TU_TOKENIZADOR")

# Definir text pipeline
text_pipeline = lambda x: vocab(tokenizer(x))

Y después de agregar esto podemos hacer inferencia con el modelo.

Al final no se está haciendo la predicción con el model_cpu, ya que la función predict() utiliza el modelo entrenado desde el principio, creo que una buena forma que podríamos solucionar esto, es hacer que a las funciones como predic(), train(), eval(), etc. reciban como parámetro el modelo que se quiere utilizar.

Escribí un tutorial con un enlace a un colab en el que muestro la manera de cargar el modelo ya entrenado y hacer predicciones con éste.

Tutorial

No sé a quién más le suceda, pero el ejemplo 2 no me dice que es categoría animal, jaja. Por cierto la manera correcta de hacer el predict es:

model = modelo2.to("cpu")

ejemplo = "Axolotls are animals and animals and tigers and lions animals animals ."

def inference(text, texto_pipeline, model):
  with torch.no_grad():
    model.eval()
    text = torch.tensor(texto_pipeline(text))
    opt_mod = torch.compile(model, mode = 'reduce-overhead') 
    output = opt_mod(text, torch.tensor([0])) 
    return output.argmax(1).item() + 1 

print(f"El ejemplo es de la categoria {DBpedia_label[inference(ejemplo, texto_pipeline, model)]}")