code: def __init__(
      self,
      units,
      thetas_dim,
      num_block_layers=4,
      backcast_length=10,
      forecast_length=5,
      share_thetas=False,
      dropout=0.1,
  ):
      super().__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.extend(
              [linear(units, units, dropout=dropout), 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 Tuple
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
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, dropout)