code: def call(self, inputs, training=None):
      (
          i_user_id,
          i_item_id,
          i_user_review,
          i_user_iid_review,
          i_user_num_reviews,
          i_item_review,
          i_item_uid_review,
          i_item_num_reviews,
      ) = inputs
      user_review_h = self.user_text_processor(
          self.l_user_review_embedding(i_user_review), training=training
      )
      a_user = self.a_user(
          tf.concat(
              [
                  user_review_h,
                  self.l_user_iid_embedding(i_user_iid_review),
              ],
              axis=-1,
          )
      )
      a_user_masking = tf.expand_dims(
          tf.sequence_mask(
              tf.reshape(i_user_num_reviews, [-1]),
              maxlen=i_user_review.shape[1],
          ),
          -1,
      )
      user_attention = self.user_attention(a_user, a_user_masking)
      user_Oi = self.user_Oi_dropout(
          tf.reduce_sum(tf.multiply(user_attention, user_review_h), 1),
          training=training,
      )
      Xu = self.Xu(user_Oi)
      item_review_h = self.item_text_processor(
          self.l_item_review_embedding(i_item_review), training=training
      )
      a_item = self.a_item(
          tf.concat(
              [
                  item_review_h,
                  self.l_item_uid_embedding(i_item_uid_review),
              ],
              axis=-1,
          )
      )
      a_item_masking = tf.expand_dims(
          tf.sequence_mask(
              tf.reshape(i_item_num_reviews, [-1]),
              maxlen=i_item_review.shape[1],
          ),
          -1,
      )
      item_attention = self.item_attention(a_item, a_item_masking)
      item_Oi = self.item_Oi_dropout(
          tf.reduce_sum(tf.multiply(item_attention, item_review_h), 1),
          training=training,
      )
      Yi = self.Yi(item_Oi)
      h0 = tf.multiply(
          tf.add(self.l_user_embedding(i_user_id), Xu),
          tf.add(self.l_item_embedding(i_item_id), Yi),
      )
      r = self.add_global_bias(
          tf.add_n(
              [
                  self.W1(h0),
                  self.user_bias(i_user_id),
                  self.item_bias(i_item_id),
              ]
          )
      )
      # import pdb; pdb.set_trace()
      return r
  
imports: import numpy
  import tensorflow
  from tensorflow import keras
  from tensorflow.keras import layers, initializers, Input
  from tensorflow.python.keras.preprocessing.sequence import pad_sequences
  from ...utils import get_rng
  from ...utils.init_utils import uniform
label_desc: Use image node_id 2 for calling the Model obj's underlying member method code with example usage: obj.call(inputs, training) and returns: r