code: def __init__(self, dim, heads=1, groups=1, use_bias=True, **kwargs):
      super(DNAConv, self).__init__(aggr="mean", **kwargs)
      assert dim % heads == 0
      assert dim % groups == 0
      assert max(groups, heads) % min(groups, heads) == 0
      self.dim = dim
      self.heads = heads
      self.groups = groups
      self.use_bias = use_bias
      self.in_fc = tf.layers.Dense(dim, use_bias=False)
      self.lin_q = GroupDense(
          self.dim, groups=self.groups, use_bias=self.use_bias
      )
      self.lin_k = GroupDense(
          self.dim, groups=self.groups, use_bias=self.use_bias
      )
      self.lin_v = GroupDense(
          self.dim, groups=self.groups, use_bias=self.use_bias
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  import tf_euler
  from tf_euler.python.convolution import conv
  from tf_euler.python.euler_ops import mp_ops
label_desc: Use image node_id 1 to create a new DNAConv object from inherited base classes: conv with example: obj = DNAConv(dim, heads, groups, use_bias)