class_docstr: This class implements a linear classifier on top of NMF activations
  
  Arguments
  ---------
  n_comp : int
      Number of NMF components
  T : int
      Number of Timepoints in the NMF activations
  num_classes : int
      Number of classes that the classifier works with
  
  Example:
  --------
  >>> theta = Theta(30, 120, 50)
  >>> H = torch.rand(1, 30, 120)
  >>> c_hat = theta.forward(H)
  >>> print(c_hat.shape)
  torch.Size([1, 50])
class_docstr_tok: ["This","class","implements","a","linear","classifier","on","top","of","NMF","activations","Arguments","--","--","--","--","-","n_comp",":","int","Number","of","NMF","components","T",":","int","Number","of","Timepoints","in","the","NMF","activations","num_classes",":","int","Number","of","classes","that","the","classifier","works","with","Example",":","--","--","--","--",">",">",">","theta","=","Theta","(","30",",","120",",","50",")",">",">",">","H","=","torch.rand","(","1",",","30",",","120",")",">",">",">","c_hat","=","theta.forward","(","H",")",">",">",">","print","(","c_hat.shape",")","torch.Size","(","[","1",",","50","]",")"]
docstr: We first collapse the time axis, and then pass through the linear layer
  
  Arguments:
  ---------
  H : torch.Tensor
      The activations Tensor with shape B x n_comp x T
  
  where B = Batchsize
        n_comp = number of NMF components
        T = number of timepoints
docstr_tok: ["We","first","collapse","the","time","axis",",","and","then","pass","through","the","linear","layer","Arguments",":","--","--","--","--","-","H",":","torch.Tensor","The","activations","Tensor","with","shape","B","x","n_comp","x","T","where","B","=","Batchsize","n_comp","=","number","of","NMF","components","T","=","number","of","timepoints"]
code: def forward(self, H):
      """We first collapse the time axis, and then pass through the linear layer
  
      Arguments:
      ---------
      H : torch.Tensor
          The activations Tensor with shape B x n_comp x T
  
      where B = Batchsize
            n_comp = number of NMF components
            T = number of timepoints
      """
      theta_out = self.hard_att(H).squeeze(2)
      theta_out = self.classifier(theta_out)
      return theta_out
  
imports: import torch.nn
  import torch.nn.functional
  import torch
  from speechbrain.lobes.models.PIQ import ResBlockAudio
label_desc: Use image node_id 2 for calling the Theta obj's underlying member method code with example usage: obj.forward(H) and returns: theta_out