'Initial state for this cell.
Parameters
func : callable, default symbol.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.
batch_size: int, default 0
Only required for NDArray API. Size of the batch (\'N\' in layout)
dimension of input.
**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.'

def begin_state(self, batch_size=0, func=ndarray.zeros, **kwargs):

    assert (not self._modified), 'After    applying    modifier    cells    (e.g.    ZoneoutCell)    the    base    cell    cannot    be    called    directly.    Call    the    modifier    cell    instead.'
    states = []
    for info in self.state_info(batch_size):
        self._init_counter += 1
        if (info is not None):
            info.update(kwargs)
        else:
            info = kwargs
        state = func(name=('%sbegin_state_%d' % (self._prefix, self._init_counter)), **info)
        states.append(state)
    return states
