I managed to solve it in two ways:

Apply the Pytorch’s transforms channel by channel:

tfms = transforms.Compose([transforms.Resize(224),
                           transforms.RandomHorizontalFlip(),
                           transforms.RandomVerticalFlip(),
                           transforms.ToTensor()])

x=[]
#set a seed so the same transforms are applied to each channel
seed = np.random.randint(2147483647)
for ch in img:
    random.seed(seed)
    x.append(tfms(Image.fromarray(ch)))

#this is the multichannel transformed image (a torch tensor)
img_tfm = torch.cat(x)


Use fastai transforms. I think this the best approach because it is really easy and ready to go:

#use fastai's transforms
tfms = get_transforms(flip_vert=True,max_warp=None,max_rotate=45,max_lighting=None,max_zoom=1.1)

#img is a torch tensor (how many channels you need)
fastai_img = fastai.vision.Image(img)
            
#apply the transforms to the image
for tfm in tfms:
    fastai_img = fastai_img.apply_tfms(tfm,size=224)

#this is the multichannel transformed image (a torch tensor)
img_tfm = fastai_img.data