Yes, I think you could use moveaxis as it’s giving the same results here:
arr = np.random.randn(224, 224, 3)
x = torch.from_numpy(arr).permute(2, 0, 1)
arr_new = np.moveaxis(arr, 2, 0)

print((x.numpy() == arr_new).all())
> True

Your normalization is wrong, since you would need to subtract the mean and divide by the stddev.