расчет потерь и затруднений при оценке модели GPT2, даже если она не определена - PullRequest
1 голос
/ 26 мая 2020

Когда я пытаюсь оценить модель GPT2 для задачи генерации текста, я напечатал потери и недоумение, как указано ниже в коде, но это не определено мной в коде.

with torch.no_grad():

    for _ in range(length):
        outputs = model(generated)
        next_token_logits = outputs[0][:, -1, :] 
        next_token = torch.multinomial(F.softmax(next_token_logits, dim=-1), num_samples=1) 

        generated = torch.cat((generated, next_token), dim=1)

print(f"loss {loss}")
print(f"perplexity {perplexity}")

...

часть из вывода:

loss 3.644557237625122
perplexity 38.26582717895508

Это распечатывает очень реалистичные c значения потерь и недоумения, и я не уверен, откуда это взялось, потому что, если я изменю его на loss1 и perplexity1, это будет дайте мне эту ошибку

     38 
---> 39 print(f"loss {loss1}")
     40 print(f"perplexity {perplexity}")
     41 
NameError: name 'loss1' is not defined

Хотя здесь для каждого поколения потери и недоумение будут одинаковыми. о том, как это вычисляется автоматически, и хотел бы получить некоторые пояснения, так как я новичок в Pytorch и ML. Любая помощь приветствуется.

...