The ModelParamsBase object is a generic ocntainer for storing the parameters of a
neural network, regardless of the layout (e.g. shallow or deep). This is made possible
through the introduction of a generic hidden layer type, H, that allows us to define
aliases and additional traits for contraining the hidden layer type. That being said, we
don’t reccoment using this type directly, but rather use the provided type aliases such as
DeepModelParams or ShallowModelParams or their owned variants. These provide a much
more straighforward interface for typing the parameters of a neural network. We aren’t too
worried about the transumtation between the two since users desiring this ability should
simply stick with a deep representation, initializing only a single layer within the
respective container.