code: def to_edge(self, n_id_src, n_id_dst, e_id):
      a = tf.expand_dims(n_id_src, -1)
      b = tf.expand_dims(n_id_dst, -1)
      c = tf.expand_dims(e_id, -1)
      c = tf.cast(c, dtype=tf.int64)
      edges = tf.concat([a, b, c], axis=1)
      rel = tf_euler.get_edge_dense_feature(
          edges, self.feature_idx, self.feature_dim
      )
      return tf.cast(tf.reshape(rel, [-1]), dtype=tf.int32)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  import tf_euler
  from tf_euler.python.mp_utils.base import UnsuperviseModel
  from tf_euler.python.euler_ops import mp_ops
  from tf_euler.python.mp_utils.base_gnn import BaseGNNNet
  from tf_euler.python.dataflow import RelationDataFlow
  from tf_euler.python.convolution import RelationConv
label_desc: Use image node_id 3 for calling the GNN obj's underlying member method code with example usage: obj.to_edge(n_id_src, n_id_dst, e_id) and returns: tf