class_docstr: Guided attention loss function module.
  
  This module calculates the guided attention loss described
  in `Efficiently Trainable Text-to-Speech System Based
  on Deep Convolutional Networks with Guided Attention`_,
  which forces the attention to be diagonal.
  
  .. _`Efficiently Trainable Text-to-Speech System
      Based on Deep Convolutional Networks with Guided Attention`:
      https://arxiv.org/abs/1710.08969
class_docstr_tok: ["Guided","attention","loss","function","module",".","This","module","calculates","the","guided","attention","loss","described","in","`","Efficiently","Trainable","Text-to-Speech","System","Based","on","Deep","Convolutional","Networks","with","Guided","Attention","`","_",",","which","forces","the","attention","to","be","diagonal",".","..","_","`","Efficiently","Trainable","Text-to-Speech","System","Based","on","Deep","Convolutional","Networks","with","Guided","Attention","`",":","https",":","\/\/arxiv.org\/abs\/1710.08969"]
docstr: Calculate forward propagation.
  
  Args:
      att_ws (Tensor): Batch of attention weights (B, T_max_out, T_max_in).
      ilens (LongTensor): Batch of input lengths (B,).
      olens (LongTensor): Batch of output lengths (B,).
  
  Returns:
      Tensor: Guided attention loss value.
docstr_tok: ["Calculate","forward","propagation",".","Args",":","att_ws","(","Tensor",")",":","Batch","of","attention","weights","(","B",",","T_max_out",",","T_max_in",")",".","ilens","(","LongTensor",")",":","Batch","of","input","lengths","(","B",",",")",".","olens","(","LongTensor",")",":","Batch","of","output","lengths","(","B",",",")",".","Returns",":","Tensor",":","Guided","attention","loss","value","."]
code: def forward(self, att_ws, ilens, olens):
      """Calculate forward propagation.
  
      Args:
          att_ws (Tensor): Batch of attention weights (B, T_max_out, T_max_in).
          ilens (LongTensor): Batch of input lengths (B,).
          olens (LongTensor): Batch of output lengths (B,).
  
      Returns:
          Tensor: Guided attention loss value.
  
      """
      if self.guided_attn_masks is None:
          self.guided_attn_masks = self._make_guided_attention_masks(
              ilens, olens
          ).to(att_ws.device)
      if self.masks is None:
          self.masks = self._make_masks(ilens, olens).to(att_ws.device)
      losses = self.guided_attn_masks * att_ws
      loss = torch.mean(losses.masked_select(self.masks))
      if self.reset_always:
          self._reset_masks()
      return self.alpha * loss
  
imports: import logging
  import numpy
  import torch
  import torch.nn.functional
  from espnet.nets.pytorch_backend.nets_utils import make_non_pad_mask
  from espnet.nets.pytorch_backend.rnn.attentions import AttForward, AttForwardTA, AttLoc
  from espnet.nets.pytorch_backend.tacotron2.cbhg import CBHG, CBHGLoss
  from espnet.nets.pytorch_backend.tacotron2.decoder import Decoder
  from espnet.nets.pytorch_backend.tacotron2.encoder import Encoder
  from espnet.nets.tts_interface import TTSInterface
  from espnet.utils.cli_utils import strtobool
  from espnet.utils.fill_missing_args import fill_missing_args
label_desc: Use image node_id 3 for calling the GuidedAttentionLoss obj's underlying member method code with example usage: obj.forward(att_ws, ilens, olens) and returns: unknown