构建一个 Transformer 模型
在 PyBooks,您正在开发的推荐引擎需要更强的能力来理解用户评论的情感。您认为采用当前最先进的架构——transformer——可以帮助实现这一点。您决定先构建一个 transformer 模型,对评论中的情感进行编码,为项目开个头。
以下包已为您导入:torch、nn、optim。
输入数据包含如下句子:"I love this product"、"This is terrible"、"Could be better" ……
以及对应的二元情感标签:1, 0, 0, ...
输入数据已拆分并转换为嵌入向量(embedding — 向量表示),对应到以下变量:
train_sentences、train_labels、test_sentences、test_labels、token_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()