MultiHeadAttentionClass की शुरुआत
अब जब आप टोकन एम्बेडिंग और पोजिशनल एम्बेडिंग बनाने के लिए क्लासेज़ परिभाषित कर चुके हैं, तो मल्टी-हेड अटेंशन करने के लिए एक क्लास परिभाषित करने का समय है। शुरुआत के लिए, attention कैलकुलेशन में उपयोग होने वाले पैरामीटर्स सेट करें, और वे लीनियर लेयर्स जिनसे इनपुट एम्बेडिंग्स को query, key, और value मैट्रिसेज़ में ट्रांसफॉर्म किया जाएगा, साथ ही एक लेयर जिससे संयुक्त attention वेट्स को वापस एम्बेडिंग्स में प्रोजेक्ट किया जाएगा.
torch.nn को nn के रूप में इंपोर्ट किया जा चुका है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PyTorch के साथ Transformer Models
अभ्यास निर्देश
- उस एम्बेडिंग डायमेंशन की गणना करें जिसे हर attention head प्रोसेस करेगा,
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 = ____