code: def __init__(
      self,
      units,
      thetas_dim,
      num_block_layers=4,
      backcast_length=10,
      forecast_length=5,
      share_thetas=False,
  ):
      super(NBEATSBlock, self).__init__()
      self.units = units
      self.thetas_dim = thetas_dim
      self.backcast_length = backcast_length
      self.forecast_length = forecast_length
      self.share_thetas = share_thetas
  
      fc_stack = [nn.Linear(backcast_length, units), nn.ReLU()]
      for _ in range(num_block_layers - 1):
          fc_stack.append(nn.Linear(units, units))
          fc_stack.append(nn.ReLU())
      self.fc = nn.Sequential(*fc_stack)
  
      if share_thetas:
          self.theta_f_fc = self.theta_b_fc = nn.Linear(
              units, thetas_dim, bias=False
          )
      else:
          self.theta_b_fc = nn.Linear(units, thetas_dim, bias=False)
          self.theta_f_fc = nn.Linear(units, thetas_dim, bias=False)
  
imports: from typing import List, Tuple
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from gluonts.time_feature import get_seasonality
label_desc: Use image node_id 1 to create a new NBEATSBlock object from inherited base classes: nn with example: obj = NBEATSBlock(units, thetas_dim, num_block_layers, backcast_length, forecast_length, share_thetas)