code: def __init__(
      self,
      past_seq_len,
      input_feature_num,
      future_seq_len,
      output_feature_num,
      num_channels,
      kernel_size=3,
      dropout=0.1,
      repo_initialization=True,
  ):
      super(TemporalConvNet, self).__init__()
  
      num_channels.append(output_feature_num)
  
      layers = []
      num_levels = len(num_channels)
      for i in range(num_levels):
          dilation_size = 2**i
          in_channels = (
              input_feature_num if i == 0 else num_channels[i - 1]
          )
          out_channels = num_channels[i]
          layers += [
              TemporalBlock(
                  in_channels,
                  out_channels,
                  kernel_size,
                  stride=1,
                  dilation=dilation_size,
                  padding=(kernel_size - 1) * dilation_size,
                  dropout=dropout,
                  repo_initialization=repo_initialization,
              )
          ]
  
      self.tcn = nn.Sequential(*layers)
      self.linear = nn.Linear(past_seq_len, future_seq_len)
      if repo_initialization:
          self.init_weights()
  
imports: import warnings
  import torch
  import torch.nn
  from torch.nn.utils import weight_norm
  from zoo.orca.automl.model.base_pytorch_model import PytorchBaseModel, PYTORCH_REGRESSION_LOSS_MAP
label_desc: Use image node_id 1 to create a new TemporalConvNet object from inherited base classes: nn with example: obj = TemporalConvNet(past_seq_len, input_feature_num, future_seq_len, output_feature_num, num_channels, kernel_size, dropout, repo_initialization)