code: def call(self, user_id, item_id, label):
      user_vec = self.user_latent_factor(user_id)
      item_vec = self.item_latent_factor(item_id)
      item_bias = self.item_bias(item_id)
  
      logit = tf.reshape(
          self.mlp(user_vec * item_vec) + item_bias, [-1]
      )
      loss = self._bce(y_true=label, y_pred=logit)
  
      l2_loss = (
          tf.nn.l2_loss(user_vec)
          + tf.nn.l2_loss(item_vec)
          + sum(
              [tf.nn.l2_loss(v) for v in self.mlp.trainable_variables]
          )
      )
  
      return loss, l2_loss
  
file_path: openrec/openrec/tf2/recommenders/gmf.py
imports: import tensorflow
  from tensorflow.keras import Model
  from openrec.tf2.modules import LatentFactor, MLP
label_desc: Use image node_id 2 for calling the GMF obj's underlying member method code with example usage: obj.call(user_id, item_id, label) and returns: loss,  l2_loss