Когда я пытаюсь оценить модель 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. Любая помощь приветствуется.