MultiHeadAttentionClass 시작하기
토큰 임베딩과 위치 임베딩을 만드는 클래스를 정의했으니, 이제 멀티-헤드 어텐션을 수행하는 클래스를 정의해 볼 차례예요. 먼저, 어텐션 계산에 사용할 매개변수와 입력 임베딩을 query, key, value 행렬로 변환하는 선형 레이어, 그리고 결합된 어텐션 가중치를 다시 임베딩 공간으로 투영하는 선형 레이어를 설정하세요.
torch.nn은 nn으로 임포트되어 있어요.
이 연습은 강의의 일부입니다
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 = ____