docstr: Shapes:
      x: B x T
      y: B x T
      length: B
docstr_tok: ["Shapes",":","x",":","B","x","T","y",":","B","x","T","length",":","B"]
code: def forward(self, x, y, length=None):
      """
      Shapes:
          x: B x T
          y: B x T
          length: B
      """
      mask = sequence_mask(
          sequence_length=length, max_len=y.size(1)
      ).float()
      return (
          torch.nn.functional.smooth_l1_loss(
              x * mask, y * mask, reduction="sum"
          )
          / mask.sum()
      )
  
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 1 for calling the Huber obj's underlying member method code with example usage: obj.forward(x, y, length) and returns: unknown