code: def _init_bilinear_attention(self):
      module_config = self.config.bilinear_attention
      num_hidden = self.config.text_embedding.num_hidden
      v_dim = module_config.visual_feat_dim
  
      v_att = BiAttention(
          v_dim, num_hidden, num_hidden, module_config.gamma
      )
  
      b_net = []
      q_prj = []
  
      for _ in range(module_config.gamma):
          b_net.append(
              BCNet(
                  v_dim,
                  num_hidden,
                  num_hidden,
                  None,
                  k=module_config.bc_net.k,
              )
          )
  
          q_prj.append(
              FCNet(
                  dims=[num_hidden, num_hidden],
                  act=module_config.fc_net.activation,
                  dropout=module_config.fc_net.dropout,
              )
          )
  
      self.b_net = nn.ModuleList(b_net)
      self.q_prj = nn.ModuleList(q_prj)
      self.v_att = v_att
  
file_path: mmf/mmf/models/ban.py
imports: import torch
  from mmf.common.registry import registry
  from mmf.models.base_model import BaseModel
  from mmf.modules.embeddings import BiLSTMTextEmbedding
  from mmf.modules.layers import BCNet, BiAttention, FCNet, WeightNormClassifier
  from torch import nn
label_desc: Use image node_id 6 for calling the BAN obj's underlying member method code with example usage: obj._init_bilinear_attention() without return types