首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GPT2收到短信有问题吗?

从GPT2收到短信有问题吗?
EN

Stack Overflow用户
提问于 2021-11-25 22:59:42
回答 1查看 129关注 0票数 0

基本上,我试图让gpt2响应变量{text}中的提示符,并遇到以下错误:

ValueError:包含多个元素的数组的真值是不明确的。使用a.any()或a.all()

到目前为止,这是我的代码:

代码语言:javascript
复制
import gradio as gr
from transformers import pipeline, GPT2Tokenizer, GPT2LMHeadModel

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')#gpt2-xl #for very powerful model
model = GPT2LMHeadModel.from_pretrained('gpt2', pad_token_id=tokenizer.eos_token_id)

text = "what is natural language processing?"
encoded_input = tokenizer.encode(text, return_tensors='pt')

#print(tokenizer.decode((encoded_input[0][0]))) # works well to here

def generate_text(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() # works well to here
text1 = generate_text(text) # BREAKS HERE

有人能帮我找出我做错了什么吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-02-24 19:27:43

似乎您使用的是return_tensors='tf'而不是return_tensors='pt'

根据文档链接

代码语言:javascript
复制
return_tensors (str, optional, defaults to None) – Can be set to ‘tf’ or ‘pt’ to return respectively TensorFlow tf.constant or PyTorch torch.Tensor instead of a list of python integers.

以下代码适用于我:

代码语言:javascript
复制
import gradio as gr
from transformers import pipeline, GPT2Tokenizer, GPT2LMHeadModel

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')#gpt2-xl #for very powerful model
model = GPT2LMHeadModel.from_pretrained('gpt2', pad_token_id=tokenizer.eos_token_id)

text = "what is natural language processing?"
encoded_input = tokenizer.encode(text, return_tensors='pt')


def generate_text(inp):
    input_ids = tokenizer.encode(inp, return_tensors='pt')
    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() # works well to here
text1 = generate_text(text) # NOW IT WORKS!!!

从模型生成文本:

什么是自然语言处理? 这是一个已经争论了很长时间的问题,我认为理解我们在这里谈论的是什么很重要。这不是一夜之间会发生的事情,但它会在非常非常短的时间内发生。我们必须非常小心我们所说的和如何谈论它,因为如果我们不这样做,它可能被误解为软弱的迹象。

Colab演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70118071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档