es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error está ocurriendo en la función generate_text, donde inp está siendo codificado en input_ids. Es posible que inp esté siendo pasado como un np.array, lo que está haciendo que el encoder tf 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:

    def generate_text(inp):
        input_ids = tokenizer.encode(inp.tolist(), 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]) + "."
    

    Intenta hacer eso y ver si resuelve el problema.

Comments are closed.