Hi,
Thank you for your edit it is clearer now. To be honest I can’t find why you have this error because your data should not already be on the GPU at the dataloader step and so tensor type required should be torch.FloatTensor.
That being said, I would suggest to try two things:
1: change
dataloader = {x: torch.utils.data.DataLoader(
                                            image_datasets[x], 
                                            batch_size=64, 
                                            shuffle=True,
                                            num_workers=4) for x in ['val']}

to
dataloader = {x: torch.utils.data.DataLoader(
                                            image_datasets[x], 
                                            batch_size=64, 
                                            shuffle=True) for x in ['val']}

(back to default value of num_worker) because maybe this is what makes the preprocessing happen on GPU.
2: Or try to give torch.cuda.FloatTensor values for the mean and std of the normalization like this:
transforms.Normalize(torch.tensor([0.485, 0.456, 0.406]).to(device), torch.tensor([0.229, 0.224, 0.225]).to(device))

Final solution would be to code the normalization as a first step of your forward in the network.
Hope one of those will work!