code: def begin_state(self, batch_size=0, func=ndarray.zeros, **kwargs):
          
          states = []
          for i, info in enumerate(self.state_info(batch_size)):
              if info is not None:
                  info.update(kwargs)
              else:
                  info = kwargs
              states.append(func(name='%sh0_%d'%(self.prefix, i), **info))
          return states
docs: Initial state for this cell.
  
          Parameters
          ----------
          batch_size: int
              Only required for `NDArray` API. Size of the batch ('N' in layout).
              Dimension of the input.
          func : callable, default `ndarray.zeros`
              Function for creating initial state.
  
              For Symbol API, func can be `symbol.zeros`, `symbol.uniform`,
              `symbol.var` etc. Use `symbol.var` if you want to directly
              feed input as states.
  
              For NDArray API, func can be `ndarray.zeros`, `ndarray.ones`, etc.
  
          **kwargs :
              Additional keyword arguments passed to func. For example
              `mean`, `std`, `dtype`, etc.
  
          Returns
          -------
          states : nested list of Symbol
              Starting states for the first RNN step.