class_docstr: Cutmix callback which replaces a random patch of image data with the corresponding patch from another image.
  This callback also converts labels to one hot before combining them according to the lambda parameters, sampled from
  a beta distribution as is done in the paper.
  
  Example: ::
  
      >>> from torchbearer import Trial
      >>> from torchbearer.callbacks import CutMix
  
      # Example Trial which does CutMix regularisation
      >>> cutmix = CutMix(1, classes=10)
      >>> trial = Trial(None, callbacks=[cutmix], metrics=['acc'])
  
  Args:
      alpha (float): The alpha value for the beta distribution.
      classes (int): The number of classes for conversion to one hot.
  
  State Requirements:
      - :attr:`torchbearer.state.X`: State should have the current data stored
      - :attr:`torchbearer.state.Y_TRUE`: State should have the current data stored
code: def __init__(self, alpha, classes=-1, mixup_loss=False):
      super(CutMix, self).__init__()
      self.classes = classes
      self.dist = Beta(
          torch.tensor([float(alpha)]), torch.tensor([float(alpha)])
      )
      self.mixup_loss = mixup_loss
  
imports: import torchbearer
  from torchbearer import Callback
  import torch
  from torch.distributions import Beta
  from torchbearer.bases import cite
label_desc: Use image node_id 1 to create a new CutMix object from inherited base classes: Callback with example: obj = CutMix(alpha, classes, mixup_loss)