시작하기무료로 시작하기

MultiHeadAttentionClass 시작하기

토큰 임베딩과 위치 임베딩을 만드는 클래스를 정의했으니, 이제 멀티-헤드 어텐션을 수행하는 클래스를 정의해 볼 차례예요. 먼저, 어텐션 계산에 사용할 매개변수와 입력 임베딩을 query, key, value 행렬로 변환하는 선형 레이어, 그리고 결합된 어텐션 가중치를 다시 임베딩 공간으로 투영하는 선형 레이어를 설정하세요.

torch.nnnn으로 임포트되어 있어요.

이 연습은 강의의 일부입니다

PyTorch로 배우는 Transformer 모델

강의 보기

연습 안내

  • 각 어텐션 헤드가 처리할 임베딩 차원 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 = ____
코드 편집 및 실행