首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在成功执行生成器`max_length`的查询()

正在成功执行生成器`max_length`的查询()
EN

Stack Overflow用户
提问于 2022-03-03 13:50:27
回答 1查看 50关注 0票数 -1

目标:在拥抱面板变压器生成器查询中设置min_lengthmax_length

我传递了50, 200作为这些参数。然而,我的输出的长度要高得多.

没有运行时失败。

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
50 200
Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.
1015
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

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

https://stackoverflow.com/questions/71338307

复制
相关文章

相似问题

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