class_docstr: NAIS is an attention network, which is capable of distinguishing which historical items
  in a user profile are more important for a prediction. We just implement the model following
  the original author with a pointwise training mode.
  
  Note:
      instead of forming a minibatch as all training instances of a randomly sampled user which is
      mentioned in the original paper, we still train the model by a randomly sampled interactions.
code: def calculate_loss(self, interaction):
      user = interaction[self.USER_ID]
      item = interaction[self.ITEM_ID]
      label = interaction[self.LABEL]
      output = self.forward(user, item)
      loss = self.bceloss(output, label) + self.reg_loss()
      return loss
  
imports: import torch
  import torch.nn
  from torch.nn.init import constant_, normal_, xavier_normal_
  from recbole.model.abstract_recommender import GeneralRecommender
  from recbole.model.layers import MLPLayers
  from recbole.utils import InputType
label_desc: Use image node_id 12 for calling the NAIS obj's underlying member method code with example usage: obj.calculate_loss(interaction) and returns: loss