class_docstr: Applies Variational Zoneout on base cell. The implementation follows.
  
  [GG16]_. Variational zoneout uses the same mask across time-steps. It can
  be applied to RNN outputs, and states. The masks for them are not shared.
  
  The mask is initialized when stepping forward for the first time and
  willremain the same until .reset() is called. Thus, if using the cell and
  stepping manually without calling .unroll(), the .reset() should be called
  after each sequence.
  
  Parameters
  ----------
  base_cell
      The cell on which to perform variational dropout.
  zoneout_outputs
      The dropout rate for outputs. Won't apply dropout if it equals 0.
  zoneout_states
      The dropout rate for state inputs on the first state channel.
      Won't apply dropout if it equals 0.
class_docstr_tok: ["Applies","Variational","Zoneout","on","base","cell",".","The","implementation","follows",".","[","GG16","]","_.","Variational","zoneout","uses","the","same","mask","across","time-steps",".","It","can","be","applied","to","RNN","outputs",",","and","states",".","The","masks","for","them","are","not","shared",".","The","mask","is","initialized","when","stepping","forward","for","the","first","time","and","willremain","the","same","until",".reset","(",")","is","called",".","Thus",",","if","using","the","cell","and","stepping","manually","without","calling",".unroll","(",")",",","the",".reset","(",")","should","be","called","after","each","sequence",".","Parameters","--","--","--","--","--","base_cell","The","cell","on","which","to","perform","variational","dropout",".","zoneout_outputs","The","dropout","rate","for","outputs",".","Wo","n't","apply","dropout","if","it","equals","0.","zoneout_states","The","dropout","rate","for","state","inputs","on","the","first","state","channel",".","Wo","n't","apply","dropout","if","it","equals","0","."]
code: def hybrid_forward(
      self, F, inputs: Tensor, states: Tensor
  ) -> Tuple[Tensor, Tensor]:
      cell, p_outputs, p_states = (
          self.base_cell,
          self.zoneout_outputs,
          self.zoneout_states,
      )
      next_output, next_states = cell(inputs, states)
  
      prev_output = self._prev_output
      if prev_output is None:
          prev_output = F.zeros_like(next_output)
  
      self._initialize_outputs_mask(F, next_output)
  
      output = (
          F.where(self.zoneout_outputs_mask, next_output, prev_output)
          if p_outputs != 0.0
          else next_output
      )
  
      self._initialize_states_masks(F, next_states)
      assert self.zoneout_states_mask is not None
  
      new_states = (
          [
              F.where(state_mask, new_s, old_s)
              for state_mask, new_s, old_s in zip(
                  self.zoneout_states_mask, next_states, states
              )
          ]
          if p_states != 0.0
          else next_states
      )
  
      self._prev_output = output
  
      return output, new_states
  
imports: from typing import Tuple
  from mxnet.gluon.rnn import BidirectionalCell, ModifierCell, RecurrentCell, SequentialRNNCell
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
label_desc: Use image node_id 7 for calling the VariationalZoneoutCell obj's underlying member method code with example usage: obj.hybrid_forward(F, inputs, states) and returns: output,  new_states