class_docstr: This network takes current state and previous observed values as input
  and returns its parameters, mean, standard deviation and probability
  of transition to the next state
class_docstr_tok: ["This","network","takes","current","state","and","previous","observed","values","as","input","and","returns","its","parameters",",","mean",",","standard","deviation","and","probability","of","transition","to","the","next","state"]
docstr: Inputs observation and returns the means, stds and transition probability for the current state
  
  Args:
      ar_mel_inputs (torch.FloatTensor): shape (batch, prenet_dim)
      states (torch.FloatTensor):  (batch, hidden_states, hidden_state_dim)
  
  Returns:
      means: means for the emission observation for each feature
          - shape: (B, hidden_states, feature_size)
      stds: standard deviations for the emission observation for each feature
          - shape: (batch, hidden_states, feature_size)
      transition_vectors: transition vector for the current hidden state
          - shape: (batch, hidden_states)
docstr_tok: ["Inputs","observation","and","returns","the","means",",","stds","and","transition","probability","for","the","current","state","Args",":","ar_mel_inputs","(","torch.FloatTensor",")",":","shape","(","batch",",","prenet_dim",")","states","(","torch.FloatTensor",")",":","(","batch",",","hidden_states",",","hidden_state_dim",")","Returns",":","means",":","means","for","the","emission","observation","for","each","feature","-","shape",":","(","B",",","hidden_states",",","feature_size",")","stds",":","standard","deviations","for","the","emission","observation","for","each","feature","-","shape",":","(","batch",",","hidden_states",",","feature_size",")","transition_vectors",":","transition","vector","for","the","current","hidden","state","-","shape",":","(","batch",",","hidden_states",")"]
code: def forward(self, ar_mels, inputs):
      r"""Inputs observation and returns the means, stds and transition probability for the current state
  
      Args:
          ar_mel_inputs (torch.FloatTensor): shape (batch, prenet_dim)
          states (torch.FloatTensor):  (batch, hidden_states, hidden_state_dim)
  
      Returns:
          means: means for the emission observation for each feature
              - shape: (B, hidden_states, feature_size)
          stds: standard deviations for the emission observation for each feature
              - shape: (batch, hidden_states, feature_size)
          transition_vectors: transition vector for the current hidden state
              - shape: (batch, hidden_states)
      """
      batch_size, prenet_dim = ar_mels.shape[0], ar_mels.shape[1]
      N = inputs.shape[1]
  
      ar_mels = ar_mels.unsqueeze(1).expand(batch_size, N, prenet_dim)
      ar_mels = torch.cat((ar_mels, inputs), dim=2)
      ar_mels = self.parametermodel(ar_mels)
  
      mean, std, transition_vector = (
          ar_mels[:, :, 0 : self.frame_channels],
          ar_mels[:, :, self.frame_channels : 2 * self.frame_channels],
          ar_mels[:, :, 2 * self.frame_channels :].squeeze(2),
      )
      std = F.softplus(std)
      std = self._floor_std(std)
      return mean, std, transition_vector
  
imports: from typing import List, Tuple
  import torch
  import torch.nn.functional
  from torch import nn
  from tqdm.auto import tqdm
  from TTS.tts.layers.tacotron.common_layers import Linear
  from TTS.tts.layers.tacotron.tacotron2 import ConvBNBlock
label_desc: Use image node_id 2 for calling the Outputnet obj's underlying member method code with example usage: obj.forward(ar_mels, inputs) and returns: mean,  std,  transition_vector