不是。
BPE 结束后,模型拿到的已经是 整数序列(token id) ,下一跳直接就是 nn.Embedding(即可训练的稠密向量),根本不会再走 one-hot。流程如下:
- 文本 → BPE 分词 → [token₁, token₂, ...]
- token → 查表(vocab_size × hidden_dim 的矩阵)→ [e₁, e₂, ...]
- 后续 Transformer 层在稠密向量上运算。
one-hot 只在教学推导 里出现(维度 = vocab_size,1 个 1 其余 0),用来写公式
output = one_hot @ Embedding_matrix
实际代码里直接用 embedding(idx) 查表,效率更高、内存更省。