Transformer模型的输入表示部分是通过以下步骤生成的:
-
词汇表(Vocabulary):需要建立一个包含所有可能词汇的词汇表。词汇表通常是按照词频排序的,以便模型能够更有效地学习常见的词汇。
-
分词(Tokenization):文本数据被分割成一系列的词或子词(tokens)。这个过程可能涉及到单词分割、去除标点符号等。
-
索引化(Indexing):将分词后的词转换为词汇表中的索引。每个索引代表词汇表中对应的词。
-
嵌入层(Embedding Layer):索引化的词汇通过嵌入层转换为密集的向量表示。嵌入层通常是一个可学习的参数矩阵,其中每一行代表词汇表中一个词的向量表示。
-
位置编码(Positional Encoding):由于Transformer模型没有递归和卷积层,无法自动捕获序列中的位置信息,因此需要手动添加位置编码。位置编码通常是基于正弦和余弦函数的固定模式,添加到嵌入向量中。
以下为一个简化的Python代码示例,说明如何实现上述步骤:
import torch
import torch.nn as nn
import torch.nn.functiona