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_shared_graph(self):
      with tf.variable_scope(self._scope, reuse=self._reuse):
          self._ge = PointwiseGeCE(
              user=self._user_ge,
              item=self._item_ge,
              item_bias=0,
              labels=self._labels,
              l2_reg=self._l2_reg,
              train=self._train,
              scope="ge",
              reuse=self._reuse,
          )
          self._mlp = PointwiseMLPCE(
              user=self._user_mlp,
              item=self._item_mlp,
              item_bias=0,
              labels=self._labels,
              l2_reg=self._l2_reg,
              dims=self._dims,
              train=self._train,
              dropout=self._dropout,
              scope="mlp",
              reuse=self._reuse,
          )
  
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 2 for calling the PointwiseGeMLPCE obj's underlying member method code with example usage: obj._build_shared_graph() without return types