content: import torch
  import torch.nn as nn
  from Sublayers import FeedForward, MultiHeadAttention, Norm
  
  
  class DecoderLayer(nn.Module):
      def __init__(self, d_model, heads, dropout=0.1):
          super().__init__()
          self.norm_1 = Norm(d_model)
          self.norm_2 = Norm(d_model)
          self.norm_3 = Norm(d_model)
          
          self.dropout_1 = nn.Dropout(dropout)
          self.dropout_2 = nn.Dropout(dropout)
          self.dropout_3 = nn.Dropout(dropout)
          
          self.attn_1 = MultiHeadAttention(heads, d_model, dropout=dropout)
          self.attn_2 = MultiHeadAttention(heads, d_model, dropout=dropout)
          self.ff = FeedForward(d_model, dropout=dropout)
  
      def forward(self, x,  trg_mask):
          x2 = self.norm_1(x)
          x = x + self.dropout_1(self.attn_1(x2, x2, x2, trg_mask))
          x2 = self.norm_3(x)
          x2 = self.ff(x2)
          x = x + self.dropout_3(x2)
          return x