class_docstr: Graves Attention as is ref1 with updates from ref2.
  ref1: https://arxiv.org/abs/1910.10288
  ref2: https://arxiv.org/pdf/1906.01083.pdf
  
  Args:
      query_dim (int): number of channels in query tensor.
      K (int): number of Gaussian heads to be used for computing attention.
code: def init_states(self, inputs):
      if self.J is None or inputs.shape[1] + 1 > self.J.shape[-1]:
          self.J = (
              torch.arange(0, inputs.shape[1] + 2.0).to(inputs.device)
              + 0.5
          )
      self.attention_weights = torch.zeros(
          inputs.shape[0], inputs.shape[1]
      ).to(inputs.device)
      self.mu_prev = torch.zeros(inputs.shape[0], self.K).to(
          inputs.device
      )
  
imports: import torch
  from scipy.stats import betabinom
  from torch import nn
  from torch.nn import functional
  from TTS.tts.layers.tacotron.common_layers import Linear
label_desc: Use image node_id 3 for calling the GravesAttention obj's underlying member method code with example usage: obj.init_states(inputs) without return types