class_docstr: DefaultNet variant that adds a secondary stream (simple linear layer) with constrained
  weights to learn autoregressive coefficients for numerical time series targets.
code: def __init__(
      self,
      encoder_span: dict,  # contains index span for each encoder
      target_name: str,
      input_size: int = None,
      output_size: int = None,
      shape: list = None,
      max_params: int = 3e7,
      num_hidden: int = 1,
      dropout: float = 0,
  ) -> None:
      self.ar_net = None
      super().__init__(
          input_size=input_size,
          output_size=output_size,
          shape=shape,
          max_params=max_params,
          num_hidden=num_hidden,
          dropout=dropout,
      )
      self.target = target_name
      self.encoder_span = encoder_span
      self.ar_column = f"__mdb_ts_previous_{self.target}"
      self.ar_idxs = list(
          *[
              range(idx[0], idx[1])
              for col, idx in encoder_span.items()
              if col == self.ar_column
          ]
      )
      dims = [(len(self.ar_idxs), output_size)]
      linears = [
          nn.Linear(in_features=inf, out_features=outf)
          for inf, outf in dims
      ]
      self.ar_net = nn.Sequential(*linears)
      self.ar_net.to(self.device)
  
file_path: lightwood/lightwood/mixer/helpers/ar_net.py
imports: import torch
  from torch import nn
  from lightwood.mixer.helpers.default_net import DefaultNet
  from lightwood.helpers.torch import LightwoodAutocast
label_desc: Use image node_id 1 to create a new ArNet object from inherited base classes: DefaultNet with example: obj = ArNet(encoder_span, target_name, input_size, output_size, shape, max_params, num_hidden, dropout)