'Gets a description of the model required to reconstruct the model with
no weights like from a yaml file.
Arguments:
get_weights:  (Default value = False)
keep_states:  (Default value = False)
Returns:
dict: Description of each component of the model.'

def get_description(self, get_weights=False, keep_states=False):

    pdict = dict()
    pdict['neon_version'] = __neon_version__
    compat_mode = (self.be.compat_mode if (self.be.compat_mode is not None) else 'neon')
    pdict['backend'] = {'type': self.be.__class__.__name__, 'compat_mode': compat_mode, 'rng_seed': self.be.rng_seed, 'rng_state': self.be.rng_get_state()}
    if self.cost:
        pdict['cost'] = self.cost.get_description()
    if self.optimizer:
        pdict['optimizer'] = self.optimizer.get_description()
    pdict['model'] = self.layers.get_description(get_weights=get_weights, keep_states=keep_states)
    return pdict
