开始使用免费开始使用

构建一个 Transformer 模型

在 PyBooks,您正在开发的推荐引擎需要更强的能力来理解用户评论的情感。您认为采用当前最先进的架构——transformer——可以帮助实现这一点。您决定先构建一个 transformer 模型,对评论中的情感进行编码,为项目开个头。

以下包已为您导入:torchnnoptim

输入数据包含如下句子:"I love this product"、"This is terrible"、"Could be better" …… 以及对应的二元情感标签:1, 0, 0, ...

输入数据已拆分并转换为嵌入向量(embedding — 向量表示),对应到以下变量: train_sentencestrain_labelstest_sentencestest_labelstoken_embeddings

本练习是课程的一部分

使用 PyTorch 的文本深度学习

查看课程

练习说明

  • 初始化 transformer 编码器。
  • 根据情感类别数量定义全连接层。
  • 在 forward 方法中,将输入先通过 transformer 编码器,再接线性层。

交互式实操练习

通过完成这段示例代码来试试这个练习。

class TransformerEncoder(nn.Module):
    def __init__(self, embed_size, heads, num_layers, dropout):
        super(TransformerEncoder, self).__init__()
        # Initialize the encoder 
        self.encoder = nn.____(
            nn.____(d_model=embed_size, nhead=heads),
            num_layers=num_layers)
        # Define the fully connected layer
        self.fc = nn.Linear(embed_size, ____)

    def forward(self, x):
        # Pass the input through the transformer encoder 
        x = self.____(x)
        x = x.mean(dim=1) 
        return self.fc(x)

model = TransformerEncoder(embed_size=512, heads=8, num_layers=3, dropout=0.5)
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()
编辑并运行代码