code: def forward(self, x):
      x = F.relu(self.bn1(self.conv1(x)), True)
  
      if self.down_type == "ave_pool":
          x = F.avg_pool2d(self.conv2(x), 2, stride=2)
      elif self.down_type == ["conv64", "conv128"]:
          x = self.conv2(x)
          x = self.down_conv2(x)
      elif self.down_type == "no_down":
          x = self.conv2(x)
      else:
          raise NameError("unknown downsampling type")
  
      normx = x
  
      x = self.conv3(x)
      x = self.conv4(x)
  
      previous = x
  
      outputs = []
      for i in range(self.n_stack):
          hg = self._modules["m" + str(i)](previous)
  
          ll = hg
          ll = self._modules["top_m_" + str(i)](ll)
  
          ll = F.relu(
              self._modules["bn_end" + str(i)](
                  self._modules["conv_last" + str(i)](ll)
              ),
              True,
          )
  
          tmp_out = self._modules["l" + str(i)](ll)
  
          if self.use_sigmoid:
              outputs.append(nn.Tanh()(tmp_out))
          else:
              outputs.append(tmp_out)
  
          if i < self.n_stack - 1:
              ll = self._modules["bl" + str(i)](ll)
              tmp_out_ = self._modules["al" + str(i)](tmp_out)
              previous = previous + ll + tmp_out_
  
      return outputs, normx
  
file_path: pifuhd/lib/model/HGFilters.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from ..net_util import conv3x3
label_desc: Use image node_id 2 for calling the HGFilter obj's underlying member method code with example usage: obj.forward(x) and returns: outputs,  normx