class_docstr: This function implements complex-valued Light-Gated Recurrent Unit layer.
  
  Arguments
  ---------
  input_size : int
      Feature dimensionality of the input tensors.
  batch_size : int
      Batch size of the input tensors.
  hidden_size : int
      Number of output values.
  num_layers : int
      Number of layers to employ in the RNN architecture.
  nonlinearity : str
      Type of nonlinearity (tanh, relu).
  normalization : str
      Type of normalization (batchnorm, layernorm).
      Every string different from batchnorm and layernorm will result
      in no normalization.
  dropout : float
      It is the dropout factor (must be between 0 and 1).
  bidirectional : bool
      If True, a bidirectional model that scans the sequence both
      right-to-left and left-to-right is used.
  init_criterion : str , optional
      (glorot, he).
      This parameter controls the initialization criterion of the weights.
      It is combined with weights_init to build the initialization method of
      the complex-valued weights (default "glorot").
  weight_init : str, optional
      (complex, unitary).
      This parameter defines the initialization procedure of the
      complex-valued weights (default "complex"). "complex" will generate random complex-valued
      weights following the init_criterion and the complex polar form.
      "unitary" will normalize the weights to lie on the unit circle.
      More details in: "Deep Complex Networks", Trabelsi C. et al.
class_docstr_tok: ["This","function","implements","complex-valued","Light-Gated","Recurrent","Unit","layer",".","Arguments","--","--","--","--","-","input_size",":","int","Feature","dimensionality","of","the","input","tensors",".","batch_size",":","int","Batch","size","of","the","input","tensors",".","hidden_size",":","int","Number","of","output","values",".","num_layers",":","int","Number","of","layers","to","employ","in","the","RNN","architecture",".","nonlinearity",":","str","Type","of","nonlinearity","(","tanh",",","relu",")",".","normalization",":","str","Type","of","normalization","(","batchnorm",",","layernorm",")",".","Every","string","different","from","batchnorm","and","layernorm","will","result","in","no","normalization",".","dropout",":","float","It","is","the","dropout","factor","(","must","be","between","0","and","1",")",".","bidirectional",":","bool","If","True",",","a","bidirectional","model","that","scans","the","sequence","both","right-to-left","and","left-to-right","is","used",".","init_criterion",":","str",",","optional","(","glorot",",","he",")",".","This","parameter","controls","the","initialization","criterion","of","the","weights",".","It","is","combined","with","weights_init","to","build","the","initialization","method","of","the","complex-valued","weights","(","default","``","glorot","''",")",".","weight_init",":","str",",","optional","(","complex",",","unitary",")",".","This","parameter","defines","the","initialization","procedure","of","the","complex-valued","weights","(","default","``","complex","''",")",".","``","complex","''","will","generate","random","complex-valued","weights","following","the","init_criterion","and","the","complex","polar","form",".","``","unitary","''","will","normalize","the","weights","to","lie","on","the","unit","circle",".","More","details","in",":","``","Deep","Complex","Networks","''",",","Trabelsi","C.","et","al","."]
docstr: Returns the hidden states for each time step.
  
  Arguments
  ---------
  wx : torch.Tensor
      Linearly transformed input.
docstr_tok: ["Returns","the","hidden","states","for","each","time","step",".","Arguments","--","--","--","--","-","wx",":","torch.Tensor","Linearly","transformed","input","."]
code: def _complex_ligru_cell(self, w, ht):
      """Returns the hidden states for each time step.
  
      Arguments
      ---------
      wx : torch.Tensor
          Linearly transformed input.
      """
  
      hiddens = []
  
      # Sampling dropout mask
      drop_mask = self._sample_drop_mask(w)
  
      # Loop over time axis
      for k in range(w.shape[1]):
          gates = w[:, k] + self.u(ht)
          atr, ati, ztr, zti = gates.chunk(4, 1)
          at = torch.cat([atr, ati], dim=-1)
          zt = torch.cat([ztr, zti], dim=-1)
          zt = torch.sigmoid(zt)
          hcand = self.act(at) * drop_mask
          ht = zt * ht + (1 - zt) * hcand
          hiddens.append(ht)
  
      # Stacking hidden states
      h = torch.stack(hiddens, dim=1)
      return h
  
imports: import torch
  import logging
  from speechbrain.nnet.complex_networks.c_linear import CLinear
  from speechbrain.nnet.complex_networks.c_normalization import CBatchNorm, CLayerNorm
label_desc: Use image node_id 3 for calling the CLiGRU_Layer obj's underlying member method code with example usage: obj._complex_ligru_cell(w, ht) and returns: h