I think your use case is hitting this case 1, so you might need to use something like this:
def my_collate(batch):
    return [torch.stack(e, dim=0) for e in list(zip(*batch))]

dataset = torch.utils.data.TensorDataset(torch.zeros(100, 1), torch.ones(100, 1), torch.ones(100, 1)*2)
loader = torch.utils.data.DataLoader(dataset, batch_size=3, collate_fn=my_collate)
for a, b, c in loader:
    print(a, a.shape)
    print(b, b.shape)
    print(c, c.shape)