開始使用免費開始

建立 MultiHeadAttentionClass 的起始結構

你已經定義了建立權杖嵌入向量與位置嵌入向量的類別,現在該定義用來執行多頭注意力的類別了。首先,請設定用於注意力計算的參數,以及將輸入嵌入向量轉換為 query、key、value 矩陣的線性層,並加入一個將合併後的注意力權重投影回嵌入向量的輸出層。

torch.nn 已匯入為 nn

本練習屬於課程

Transformer Models with PyTorch

檢視課程

練習說明

  • 計算每個注意力頭要處理的嵌入維度 head_dim
  • 定義三個輸入層(對應 query、key、value)與一個輸出層;將輸入層的 bias 參數移除。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        # Calculate the dimensions each head will process
        self.num_heads = num_heads
        self.d_model = d_model
        self.head_dim = ____
        # Define the three input layers and one output layer
        self.query_linear = nn.Linear(____, ____, bias=False)
        self.key_linear = nn.Linear(____)
        self.value_linear = ____
        self.output_linear = ____
編輯並執行程式碼