class_docstr: Performs manifold mixup on desired layers. Requires use of :meth:`MixupInputs.loss`, otherwise lambdas can be found in
  state under :attr:`.MIXUP_LAMBDA`. Model targets will be a tuple containing the original target and permuted target.
  
  Args:
      lam: Mixup lambda. If RANDOM, choose lambda from Beta(alpha, alpha). Else, lambda=lam
      alpha: Mixup alpha. Alpha used to sample lambda from Beta(alpha, alpha)
code: def __init__(self, alpha=1.0, lam=RANDOM):
      super(ManifoldMixup, self).__init__()
      self._layers = []
      self._mixup_layers = None
      self.alpha = alpha
      self.lam = lam
      if alpha > 0:
          self.distrib = Beta(self.alpha, self.alpha)
      self.layer_names = []
      self.depth = 0
      self._layer_filter = []
      self._layer_types = []
  
imports: from torchbearer import Callback
  import torchbearer
  from torch.distributions.beta import Beta
  import random
  import torch
  import types
  from torchbearer import cite
label_desc: Use image node_id 1 to create a new ManifoldMixup object from inherited base classes: Callback with example: obj = ManifoldMixup(alpha, lam)