शुरू करेंमुफ़्त में शुरू करें

MultiHeadAttention क्लास में methods जोड़ना

इस अभ्यास में, आप चार methods परिभाषित करके MultiHeadAttention क्लास का शेष भाग शुरू से बनाएँगे:

  • .split_heads(): इनपुट एम्बेडिंग्स को attention heads के बीच बाँटें और ट्रांसफॉर्म करें
  • .compute_attention(): scaled dot-product attention weights की गणना करें और उन्हें values मैट्रिक्स से गुणा करें
  • .combine_heads(): attention weights को वापस इनपुट एम्बेडिंग्स x जैसी ही shape में ट्रांसफॉर्म करें
  • .forward(): इनपुट एम्बेडिंग्स को हर प्रोसेस से पास कराने के लिए अन्य methods को कॉल करें

torch.nn को nn के रूप में इम्पोर्ट किया गया है, torch.nn.functional F के रूप में उपलब्ध है, और torch भी उपलब्ध है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

PyTorch के साथ Transformer Models

पाठ्यक्रम देखें

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.num_heads = num_heads
        self.d_model = d_model
        self.head_dim = d_model // num_heads
        self.query_linear = nn.Linear(d_model, d_model, bias=False)
        self.key_linear = nn.Linear(d_model, d_model, bias=False)
        self.value_linear = nn.Linear(d_model, d_model, bias=False)
        self.output_linear = nn.Linear(d_model, d_model)

    def split_heads(self, x, batch_size):
        seq_length = x.size(1)
        # Split the input embeddings and permute
        x = x.____
        return x.permute(0, 2, 1, 3)
कोड संपादित करें और चलाएँ