I guess the ToPILImage transformation (and later the ToTensor) might try to normalize your numpy arrays, which might result in a clamped output.
Could you try to pass a single input array to torchvision.transforms.functional.to_pil_image() as well as to_tensor() and check the output values?