class_docstr: The PointwiseGeMLPCE module minimizes the cross entropy classification loss. The logits are calculated as follows [ncf]_     (Bias term is not included).
  
  .. math::
      \alpha h^T(u_i^{ge} \odot v_j^{ge}) + (1 - \alpha)MLP([u_i^{mlp}, v_j^{mlp}])
  
  Parameters
  ----------
  user_mlp: Tensorflow tensor
      :math:`u^{mlp}` for users involved in the interactions. Shape: [number of interactions, dimensionality of         :math:`u^{mlp}`].
  user_ge: Tensorflow tensor
      :math:`u^{ge}` for users involved in the interactions. Shape: [number of interactions, dimensionality of         :math:`u^{ge}`].
  item_mlp: Tensorflow tensor
      :math:`v^{mlp}` for items involved in the interactions. Shape: [number of interactions, dimensionality of         :math:`v^{mlp}`].
  item_ge: Tensorflow tensor
      :math:`v^{ge}` for items involved in the interactions. Shape: [number of interactions, dimensionality of         :math:`v^{ge}`].
  item_bias: Tensorflow tensor
      Biases for items involved in the interactions. Shape: [number of interactions, 1].
  dims: Numpy array.
      Specify the size of the MLP (openrec.tf1.legacy.modules.extractions.MultiLayerFC).
  labels: Tensorflow tensor, required for training.
      Groundtruth labels for the interactions. Shape [number of interactions, ].
  dropout: float, optional.
      Dropout rate for MLP (intermediate layers only).
  alpha: float, optional.
      Value of :math:`\alpha`. Default to 0.5.
  l2_reg: float, optional
      Weight for L2 regularization, i.e., weight decay.
  train: bool, optionl
      An indicator for training or servining phase.
  scope: str, optional
      Scope for module variables.
  reuse: bool, optional
      Whether or not to reuse module variables.
code: def _build_serving_graph(self):
      with tf.variable_scope(self._scope, reuse=self._reuse):
          item_bias_rep = tf.tile(
              self._item_bias, (tf.shape(self._user)[0], 1)
          )
          logits = (
              self._alpha * self._ge.get_outputs()[0]
              + (1 - self._alpha) * self._mlp.get_outputs()[0]
              + tf.reshape(
                  item_bias_rep,
                  (tf.shape(self._user)[0], tf.shape(self._item)[0]),
              )
          )
          self._outputs.append(logits)
  
file_path: openrec/openrec/tf1/legacy/modules/interactions/pointwise_ge_mlp_ce.py
imports: from __future__ import print_function
  import tensorflow
  from termcolor import colored
  from openrec.tf1.legacy.modules.interactions import Interaction
  from openrec.tf1.legacy.modules.interactions import PointwiseGeCE
  from openrec.tf1.legacy.modules.interactions import PointwiseMLPCE
label_desc: Use image node_id 4 for calling the PointwiseGeMLPCE obj's underlying member method code with example usage: obj._build_serving_graph() without return types