一字一诗 / 第 15 课 / 图 04
当前源码阅读

进入 GPT:把输入算成下一字的分数

按顺序看 hidden、blocks、logits、loss,不需要一开始记住英文。

poetry_gpt/model.py · 第 90—99 行(当前源码节选)

 90      def forward(self, tokens, targets=None):
 91          _, length = tokens.shape
 92          if length > self.config.context: raise ValueError("输入超过模型的前文长度。")
 93          positions = torch.arange(length, device=tokens.device)
 94          hidden = self.dropout(self.characters(tokens) + self.positions(positions))
 95          for block in self.blocks: hidden = block(hidden)
 96          logits = self.output(self.final_norm(hidden))
 97          loss = None if targets is None else F.cross_entropy(logits.reshape(-1, logits.size(-1)),
 98                                                   targets.reshape(-1), ignore_index=-100)
 99          return logits, loss