Hello,
I had the same problem, but came up with a somewhat different way to approach it which may be of interest. I have defined the following transform which lets you return both the normalised and the unnormalised version of the data from data loader:
class Branch(object):

    def __init__(self, transforms):
        self.transforms = transforms

    def __call__(self, img):
        outputs = []
        for t in self.transforms:
            outputs.append(t(img))
        return outputs

    def __repr__(self):
        format_string = self.__class__.__name__ + '('
        for t in self.transforms:
            format_string += '\n'
            format_string += '    {0}'.format(t)
        format_string += '\n)'
        return format_string

Use for example like this:
    train_set = datasets.MNIST(
        '../data/mnist',
        train=True,
        download=True,
        transform=Branch([
            transforms.Compose([
                transforms.ToTensor(),
                transforms.Normalize((0.1307,), (0.3081,))]),
            transforms.ToTensor()]))