You are missing the permutation inside your __getitem__:
img, target = self.data[index], int(self.labels[index])
img = np.transpose(img, (1, 2, 0))
if self.transform is not None:
    ...

Since you are loading each sample as a numpy array, you would have to permute it manually.