I really don't think it makes sense to add this class. We already have the negative log likelihood for softmax outputs of MLPs.
and I don't see any reason to maintain two sets of the code.
I think we should just use that, instead of forcing people to make models with a __call__ method. I think we should move away
from using __call__ because it causes problems for multiple inheritance. If two different classes both use __call__ to mean different
things, you can't make a subclass of both classes.