class_docstr: Implementation of supervised GraphSAGE.
code: def _loss(self):
      # Weight decay loss
      for aggregator in self.aggregators:
          for var in aggregator.vars.values():
              self.loss += FLAGS.weight_decay * tf.nn.l2_loss(var)
      for var in self.node_pred.vars.values():
          self.loss += FLAGS.weight_decay * tf.nn.l2_loss(var)
  
      # classification loss
      if self.sigmoid_loss:
          self.loss += tf.reduce_mean(
              tf.nn.sigmoid_cross_entropy_with_logits(
                  logits=self.node_preds,
                  labels=self.placeholders["labels"],
              )
          )
      else:
          self.loss += tf.reduce_mean(
              tf.nn.softmax_cross_entropy_with_logits(
                  logits=self.node_preds,
                  labels=self.placeholders["labels"],
              )
          )
  
      tf.summary.scalar("loss", self.loss)
  
file_path: GraphSAGE/graphsage/supervised_models.py
imports: import tensorflow
  import graphsage.models
  import graphsage.layers
  from graphsage.aggregators import MeanAggregator, MaxPoolingAggregator, MeanPoolingAggregator, SeqAggregator, GCNAggregator
label_desc: Use image node_id 3 for calling the SupervisedGraphsage obj's underlying member method code with example usage: obj._loss() without return types