code: def forward(self, x):
      b = x.size(0)
      x = self.masker(x)  # [B, D] -> [B, k, D]
      x = self.fc(
          x.view(b, -1, 1)
      )  # [B, k, D] -> [B, k * D, 1] -> [B, k * (2 * D'), 1]
      x = self.bn(x)
      chunks = x.chunk(self.k, 1)  # k * [B, 2 * D', 1]
      x = sum(
          [
              F.relu(
                  torch.sigmoid(x_[:, : self.base_output_dim, :])
                  * x_[:, self.base_output_dim :, :]
              )
              for x_ in chunks
          ]
      )  # k * [B, D', 1] -> [B, D', 1]
      return x.squeeze(-1)
  
file_path: pytorch_tabular/src/pytorch_tabular/models/danet/arch_blocks.py
imports: from functools import partial
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from pytorch_tabular.models.common.layers.activations import entmax15
  from pytorch_tabular.models.common.layers.batch_norm import GBN
label_desc: Use image node_id 2 for calling the AbstractLayer obj's underlying member method code with example usage: obj.forward(x) and returns: x