開始使用免費開始

建立一個 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

本練習屬於課程

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()
編輯並執行程式碼