code: def _build_item_extractions(self, train=True):
      super(VisualBPR, self)._build_item_extractions(train)
      if train:
          self._add_module(
              "p_item_vf",
              MultiLayerFC(
                  in_tensor=self._get_input("p_item_vfeature"),
                  dropout_mid=self._dropout_rate,
                  train=True,
                  l2_reg=self._l2_reg_mlp,
                  dims=self._dims,
                  scope="item_visual_embed",
                  reuse=False,
              ),
          )
          self._add_module(
              "n_item_vf",
              MultiLayerFC(
                  in_tensor=self._get_input("n_item_vfeature"),
                  dropout_mid=self._dropout_rate,
                  train=True,
                  l2_reg=self._l2_reg_mlp,
                  dims=self._dims,
                  scope="item_visual_embed",
                  reuse=True,
              ),
          )
      else:
          self._add_module(
              "item_vf",
              MultiLayerFC(
                  in_tensor=self._get_input(
                      "item_vfeature", train=False
                  ),
                  train=False,
                  l2_reg=self._l2_reg_mlp,
                  dims=self._dims,
                  scope="item_visual_embed",
                  reuse=True,
              ),
              train=False,
          )
  
file_path: openrec/openrec/tf1/legacy/recommenders/visual_bpr.py
imports: from openrec.tf1.legacy.recommenders import BPR
  from openrec.tf1.legacy.modules.extractions import LatentFactor, MultiLayerFC
  from openrec.tf1.legacy.modules.fusions import Average
label_desc: Use image node_id 4 for calling the VisualBPR obj's underlying member method code with example usage: obj._build_item_extractions(train) without return types