始める無料で始める

MultiHeadAttentionClass の作成を始める

トークン埋め込みと位置埋め込みを作成するクラスを定義できたので、次はマルチヘッドアテンションを実行するクラスを定義します。まず、アテンション計算に使うパラメータと、入力埋め込みを query・key・value 行列に変換するための線形層、そして結合したアテンション重みを埋め込みに投影し直すための出力用の線形層を用意します。

torch.nnnn としてインポート済みです。

この演習はコースの一部です

PyTorchで学ぶTransformerモデル

コースを見る

演習の手順

  • 各アテンションヘッドが処理する埋め込み次元 head_dim を計算します。
  • 入力用の3つの層(query、key、value)と出力用の1つの層を定義し、入力層からは 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 = ____
コードを編集して実行