class_docstr: Single sparse graph attention layer.
class_docstr_tok: ["Single","sparse","graph","attention","layer","."]
code: def call(self, inputs):
      x, adj = inputs[0], inputs[1]
      x = self.dropout(x)
      x = tf.matmul(x, self.weight)
  
      attn_row = tf.matmul(x, self.attention_row)
      attn_col = tf.matmul(x, self.attention_col)
  
      attn = tf.sparse.add(
          adj * attn_row, adj * tf.transpose(attn_col, perm=[1, 0])
      )
  
      attn = tf.sparse.SparseTensor(
          indices=attn.indices,
          values=self.leakyrelu(attn.values),
          dense_shape=attn.dense_shape,
      )
  
      # Reorder the indices to ensure that the softmax function is correctly
      # applied.
      attn = tf.sparse.reorder(attn)
      attn = tf.sparse.softmax(attn)
  
      # sparse dropout
      attn = tf.sparse.SparseTensor(
          indices=attn.indices,
          values=self.dropout(attn.values),
          dense_shape=attn.dense_shape,
      )
  
      output = tf.sparse.sparse_dense_matmul(attn, x)
      return output
  
imports: import tensorflow
label_desc: Use image node_id 3 for calling the SparseGraphAttnLayer obj's underlying member method code with example usage: obj.call(inputs) and returns: output