docstr: Args:
      x: A Variable containing a FloatTensor of size
          (batch, max_len, dim) which contains the
          unnormalized probability for each class.
      target: A Variable containing a LongTensor of size
          (batch, max_len, dim) which contains the index of the true
          class for each corresponding step.
      length: A Variable containing a LongTensor of size (batch,)
          which contains the length of each data in a batch.
  Shapes:
      x: B x T X D
      target: B x T x D
      length: B
  Returns:
      loss: An average loss value in range [0, 1] masked by the length.
docstr_tok: ["Args",":","x",":","A","Variable","containing","a","FloatTensor","of","size","(","batch",",","max_len",",","dim",")","which","contains","the","unnormalized","probability","for","each","class",".","target",":","A","Variable","containing","a","LongTensor","of","size","(","batch",",","max_len",",","dim",")","which","contains","the","index","of","the","true","class","for","each","corresponding","step",".","length",":","A","Variable","containing","a","LongTensor","of","size","(","batch",",",")","which","contains","the","length","of","each","data","in","a","batch",".","Shapes",":","x",":","B","x","T","X","D","target",":","B","x","T","x","D","length",":","B","Returns",":","loss",":","An","average","loss","value","in","range","[","0",",","1","]","masked","by","the","length","."]
code: def forward(self, x, target, length):
      """
      Args:
          x: A Variable containing a FloatTensor of size
              (batch, max_len, dim) which contains the
              unnormalized probability for each class.
          target: A Variable containing a LongTensor of size
              (batch, max_len, dim) which contains the index of the true
              class for each corresponding step.
          length: A Variable containing a LongTensor of size (batch,)
              which contains the length of each data in a batch.
      Shapes:
          x: B x T X D
          target: B x T x D
          length: B
      Returns:
          loss: An average loss value in range [0, 1] masked by the length.
      """
      # mask: (batch, max_len, 1)
      target.requires_grad = False
      mask = (
          sequence_mask(sequence_length=length, max_len=target.size(1))
          .unsqueeze(2)
          .float()
      )
      if self.seq_len_norm:
          norm_w = mask / mask.sum(dim=1, keepdim=True)
          out_weights = norm_w.div(target.shape[0] * target.shape[2])
          mask = mask.expand_as(x)
          loss = functional.mse_loss(
              x * mask, target * mask, reduction="none"
          )
          loss = loss.mul(out_weights.to(loss.device)).sum()
      else:
          mask = mask.expand_as(x)
          loss = functional.mse_loss(
              x * mask, target * mask, reduction="sum"
          )
          loss = loss / mask.sum()
      return loss
  
imports: import math
  import numpy
  import torch
  from torch import nn
  from inspect import signature
  from torch.nn import functional
  from TTS.tts.utils.generic_utils import sequence_mask
  from TTS.tts.utils.ssim import ssim
label_desc: Use image node_id 2 for calling the MSELossMasked obj's underlying member method code with example usage: obj.forward(x, target, length) and returns: loss