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 on_sample(self, state):
      lam = self._sample_lam()
      state[torchbearer.MIXUP_LAMBDA] = lam
  
      layer = random.choice(self._layers)
      layer.mixup()
  
      state[torchbearer.MIXUP_PERMUTATION] = torch.randperm(
          state[torchbearer.X].size(0)
      )
      state[torchbearer.Y_TRUE] = (
          state[torchbearer.Y_TRUE],
          state[torchbearer.Y_TRUE][
              state[torchbearer.MIXUP_PERMUTATION]
          ],
      )
  
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 10 for calling the ManifoldMixup obj's underlying member method code with example usage: obj.on_sample(state) without return types