docs: def collate_fn(batch, train=True):
      """ list of tensors to a batch tensors """
      premise_batch, _ = pad_batch([row['premise'] for row in batch])
      hypothesis_batch, _ = pad_batch([row['hypothesis'] for row in batch])
      label_batch = torch.stack([row['label'] for row in batch])
  
      # PyTorch RNN requires batches to be transposed for speed and integration with CUDA
      transpose = (lambda b: b.t_().squeeze(0).contiguous())
  
      return (transpose(premise_batch), transpose(hypothesis_batch), transpose(label_batch))