目标:在拥抱面板变压器生成器查询中设置min_length和max_length。
我传递了50, 200作为这些参数。然而,我的输出的长度要高得多.
没有运行时失败。
from transformers import pipeline, set_seed
generator = pipeline('text-generation', model='gpt2')
set_seed(42)
def query(payload, multiple, min_char_len, max_char_len):
print(min_char_len, max_char_len)
list_dict = generator(payload, min_length=min_char_len, max_length=max_char_len, num_return_sequences=multiple)
test = [d['generated_text'].split(payload)[1].strip() for d in list_dict]
for t in test: print(len(t))
return test
query('example', 1, 50, 200)输出:
50 200
Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.
1015发布于 2022-03-04 09:36:53
解释:
纳西尔对拥抱变形金刚Git问题响应的解释
模型中,不要一次只吃一个字符,而是一次只吃一个标记。有不同的算法来实现这一点,但基本上“我的名字是尼古拉斯”把变压器分成“我”,“名字”,“is",”nic","olas“,例如,每个标记都有一个数字。 因此,当您生成令牌时,它们可以包含自己的一个或多个字符(例如,通常是几个甚至几乎任何常见的单词)。这就是为什么您看到的是1015而不是预期的200 (这里的令牌平均有5个字符)。
解决方案:
当我下定决心..。
将
min_char_len, max_char_len重命名为min_tokens, max_tokens,只需将其值减少1/4或1/5。
https://stackoverflow.com/questions/71338307
复制相似问题