code: def _build(self):
      labels = tf.reshape(
          tf.cast(self.placeholders["batch2"], dtype=tf.int64),
          [self.batch_size, 1],
      )
      self.neg_samples, _, _ = tf.nn.fixed_unigram_candidate_sampler(
          true_classes=labels,
          num_true=1,
          num_sampled=FLAGS.neg_sample_size,
          unique=True,
          range_max=len(self.degrees),
          distortion=0.75,
          unigrams=self.degrees.tolist(),
      )
  
      self.outputs1 = tf.nn.embedding_lookup(
          self.target_embeds, self.inputs1
      )
      self.outputs2 = tf.nn.embedding_lookup(
          self.context_embeds, self.inputs2
      )
      self.outputs2_bias = tf.nn.embedding_lookup(
          self.context_bias, self.inputs2
      )
      self.neg_outputs = tf.nn.embedding_lookup(
          self.context_embeds, self.neg_samples
      )
      self.neg_outputs_bias = tf.nn.embedding_lookup(
          self.context_bias, self.neg_samples
      )
  
      self.link_pred_layer = BipartiteEdgePredLayer(
          self.hidden_dim,
          self.hidden_dim,
          self.placeholders,
          bilinear_weights=False,
      )
  
imports: from collections import namedtuple
  import tensorflow
  import math
  import graphsage.layers
  import graphsage.metrics
  from .prediction import BipartiteEdgePredLayer
  from .aggregators import MeanAggregator, MaxPoolingAggregator, MeanPoolingAggregator, SeqAggregator, GCNAggregator
label_desc: Use image node_id 2 for calling the Node2VecModel obj's underlying member method code with example usage: obj._build() without return types