code: def get_edge_attr(self, block):
      n_id_dst = tf.cast(
          tf.expand_dims(block.n_id, -1), dtype=tf.float32
      )
      n_id_src = mp_ops.gather(n_id_dst, block.res_n_id)
      n_id_src = mp_ops.gather(n_id_src, block.edge_index[0])
      n_id_dst = mp_ops.gather(n_id_dst, block.edge_index[1])
      n_id_src = tf.cast(tf.squeeze(n_id_src, -1), dtype=tf.int64)
      n_id_dst = tf.cast(tf.squeeze(n_id_dst, -1), dtype=tf.int64)
      edge_attr = self.to_edge(n_id_src, n_id_dst, block.e_id)
      return edge_attr
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  import tf_euler
  from tf_euler.python.euler_ops import mp_ops
  from tf_euler.python.mp_utils import utils
  from tf_euler.python.mp_utils.base_gnn import BaseGNNNet
  from tf_euler.python.utils.encoders import ShallowEncoder
label_desc: Use image node_id 5 for calling the SharedGroupGNNNet obj's underlying member method code with example usage: obj.get_edge_attr(block) and returns: edge_attr