Trainers:
* `TrainerGrad` - a regular gradient descent trainer.
Visualization:
* `Monitor` - a visualization of the training progress. It's used in `TrainerGrad`.
* `MaskTrainer` - shows which input image parts a model "looks at" ([paper](https://arxiv.org/abs/1704.03296)).
* plot adversarial examples with `trainer.train(adversarial=True)`.
Mutual Information estimators:
* `GCMI` - [Gaussian-Copula](https://github.com/robince/gcmi)
* `KMeans` - mutual information binning with k-means (fastest)
* `NPEET` - Kraskov-like kNN mutual information estimation from [NPEET](https://github.com/gregversteeg/NPEET) toolbox
* `MINE` - [Mutual Information Nerual Estimation](https://arxiv.org/abs/1801.04062)