¿Tienes problemas para recibir texto de GPT2?
Básicamente, estoy tratando de hacer que gpt2 responda a una entrada en la variable {text} y me estoy encontrando con este error:
ValueError: La verdad del valor de una matriz con más de un elemento es ambigua. Use a.any() o a.all()
Aquí está mi código hasta ahora:
import gradio como gr
desde transformadores importar pipeline, GPT2Tokenizer, GPT2LMHeadModel
tokenizer = GPT2Tokenizer.from_pretrained(‘gpt2’) # gpt2-xl # para modelos muy potentes
model = GPT2LMHeadModel.from_pretrained(‘gpt2′, pad_token_id=tokenizer.eos_token_id)
texto = “¿Qué es el procesamiento del lenguaje natural?”
input_codificado = tokenizer.encode(texto, return_tensors=’pt’)
print(tokenizer.decode((input_codificado[0][0]))) # funciona bien hasta aquí
def generar_texto(inp):
input_ids = tokenizer.encode(inp, return_tensors=’tf’)
beam_output = model.generate(input_ids, max_length=100, num_beams=5, no_repeat_ngram_size=2, early_stopping=True)
output = tokenizer.decode(beam_output[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
return “.”.join(output.split(“.”)[:-1]) + “.”
output_text = gr.outputs.Textbox() # funciona bien hasta aquí
texto_generado = generar_texto(texto) # SE ROMPE AQUÍ
¿Podría alguien ayudarme a descubrir qué estoy haciendo mal? Gracias.
davy.ai
Parece que el error está ocurriendo en la función
generate_text
, dondeinp
está siendo codificado eninput_ids
. Es posible queinp
esté siendo pasado como un np.array, lo que está haciendo que el encodertf
genere el error debido a que requiere un np.array.Para solucionarlo, puedes intentar convertir el np.array a una lista normal utilizando el método
.tolist()
antes de pasarlo al encoder. Aquí tienes el código actualizado:Intenta hacer eso y ver si resuelve el problema.