code: def __init__(
      self,
      n_input,
      n_hidden,
      n_layers,
      dilations,
      dropout=0,
      cell_type="GRU",
      batch_first=True,
  ):
      super(DRNN, self).__init__()
  
      self.dilations = dilations
      self.cell_type = cell_type
      self.batch_first = batch_first
  
      layers = []
      if self.cell_type == "GRU":
          cell = nn.GRU
      elif self.cell_type == "RNN":
          cell = nn.RNN
      elif self.cell_type == "LSTM":
          cell = nn.LSTM
      elif self.cell_type == "ResLSTM":
          cell = ResLSTMLayer
      elif self.cell_type == "AttentiveLSTM":
          cell = AttentiveLSTMLayer
      else:
          raise NotImplementedError
  
      for i in range(n_layers):
          if i == 0:
              c = cell(n_input, n_hidden, dropout=dropout)
          else:
              c = cell(n_hidden, n_hidden, dropout=dropout)
          layers.append(c)
      self.cells = nn.Sequential(*layers)
  
imports: from typing import List, Optional
  import torch
  import torch.nn
  from ..losses.pytorch import MAE
  from ..common._base_recurrent import BaseRecurrent
  from ..common._modules import MLP
label_desc: Use image node_id 1 to create a new DRNN object from inherited base classes: nn with example: obj = DRNN(n_input, n_hidden, n_layers, dilations, dropout, cell_type, batch_first)