class_docstr: ## Auto regressive model
code: def __init__(
      self, src_embed: Module, encoder: Encoder, generator: Module
  ):
      super().__init__()
      # Token embedding module
      self.src_embed = src_embed
      # Transformer based encoder
      self.encoder = encoder
      # Next token generation layer;
      # this gives logits of the the next token
      self.generator = generator
      # This will be initialized on the first call
      self.src_mask = None
  
imports: import dataclasses
  import torch
  from labml_helpers.module import Module
  from torch import nn
  from torch.utils.data import Dataset, DataLoader
  from labml import experiment, lab, tracker, monit, logger
  from labml.logger import Text
  from labml.utils.download import download_file
  from labml_nn.experiments.nlp_autoregression import transpose_batch
  from labml_nn.optimizers.noam import Noam
  from labml_nn.transformers import Encoder, MultiHeadAttention
  from labml_nn.transformers.feed_forward import FeedForward
  from labml_nn.transformers.models import EmbeddingsWithPositionalEncoding, TransformerLayer
  from labml_nn.transformers.utils import subsequent_mask
label_desc: Use image node_id 1 to create a new AutoregressiveModel object from inherited base classes: Module with example: obj = AutoregressiveModel(src_embed, encoder, generator)