相关文章推荐
难过的橙子  ·  使用 PowerShell ...·  4 月前    · 
宽容的毛衣  ·  pandas ...·  5 月前    · 
光明磊落的镜子  ·  GORM ...·  8 月前    · 
面冷心慈的酱牛肉  ·  Linux C/C++ UDP ...·  1 年前    · 

BERT2: 如何使用GPT2LMHeadModel来开始一个句子,而不是完成它

0 人关注

我正在使用GPT2LMHeadModel来改变GPT2在一个句子中选择下一个词的方式。在这一点上,我必须给出句子的初始部分,GTP2开始预测更好的下一个词。

我想让GPT2阅读整个句子,然后在此基础上开始一个新的句子(就像它在翻译时那样)。

这是一个关于我如何使用它的例子。

def gera_palavras_candidatas(context, past):
  #global model
  global enc
  global stop_token
  if past == None:
    context = torch.tensor(context).unsqueeze(0)
  else: 
    context = torch.tensor([context[-1]]).unsqueeze(0)
  context = {'input_ids': context} 
  output = context
  prev = context
  with torch.no_grad():
    logits, past = model(**prev,  past_key_values=past, use_cache=True, return_dict=False)
    logits = logits[:, -1, :] 
    probs = F.softmax(logits, dim=-1).tolist()[0]
    probs = sorted(enumerate(probs), key=lambda x: x[1], reverse=True)
  return probs, past
stop_token = [enc.encoder[x] for x in ('<|endoftext|>', '.', '!', '?')]
initial_sentence= "What I am trying to say is"
context = enc.encode(initial_sentence)
candidate_words, past = generate_candidates(context, None)
print('Candidate words to complete the sentence "', initial_sentence, '": ')
print('Word        Probability         Score')
for i in range(0, 10):
  candidate_word = candidate_words[i]