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

डिकोडर लेयर में क्रॉस-अटेंशन जोड़ना

पहले परिभाषित किए गए encoder और decoder स्टैक्स को एक encoder-decoder ट्रांसफॉर्मर में जोड़ने के लिए, आपको दोनों के बीच पुल का काम करने वाला एक क्रॉस-अटेंशन मैकेनिज़्म बनाना होगा.

आपने पहले जो MultiHeadAttention क्लास परिभाषित की थी, वह अभी भी उपलब्ध है.

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

PyTorch के साथ Transformer Models

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

अभ्यास निर्देश

  • __init__ मेथड में एक क्रॉस-अटेंशन मैकेनिज़्म (MultiHeadAttention का उपयोग करके) और तीसरा लेयर नॉर्मलाइज़ेशन (nn.LayerNorm का उपयोग करके) परिभाषित करें.
  • फॉरवर्ड पास को पूरा करें ताकि डिकोडर लेयर में क्रॉस-अटेंशन जोड़ा जा सके.

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

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

class DecoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        self.self_attn = MultiHeadAttention(d_model, num_heads)
        # Define cross-attention and a third layer normalization
        self.cross_attn = ____
        self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        self.norm3 = ____
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, y, tgt_mask, cross_mask):
        self_attn_output = self.self_attn(x, x, x, tgt_mask)
        x = self.norm1(x + self.dropout(self_attn_output))
        # Complete the forward pass
        cross_attn_output = self.____(____)
        x = self.norm2(x + self.dropout(____))
        ff_output = self.ff_sublayer(x)
        x = self.norm3(x + self.dropout(ff_output))
        return x
कोड संपादित करें और चलाएँ