MultiHeadAttentionClass の作成を始める
トークン埋め込みと位置埋め込みを作成するクラスを定義できたので、次はマルチヘッドアテンションを実行するクラスを定義します。まず、アテンション計算に使うパラメータと、入力埋め込みを query・key・value 行列に変換するための線形層、そして結合したアテンション重みを埋め込みに投影し直すための出力用の線形層を用意します。
torch.nn は nn としてインポート済みです。
この演習はコースの一部です
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 = ____