建立一個 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
本練習屬於課程
Deep Learning for Text with PyTorch
練習說明
- 初始化 transformer encoder。
- 根據情感類別數定義全連接層。
- 在 forward 方法中,先將輸入傳入 transformer encoder,再接上線性層。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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()