Thank you so much for your reply! In the code I included in the original post, I tested whether the image tensors were equal using torch.equal(img1, img2). I have also printed them out and manually checked before, so that is not the problem.
conf.dataset is just the torchvision CIFAR10 dataset, and CIFAR10Noise is a custom Pytorch Dataset I created. This is the code that I ran to create the dataset and store it as a pickled list:
def noisy(image):
    row,col,ch= image.shape
    mean = 0
    gauss = np.random.normal(mean,0.5,(row,col,ch))
    gauss = gauss.reshape(row,col,ch)
    noisy = image + gauss
    return noisy

train_set = torchvision.datasets.CIFAR10()

dataList = []
for i, entry in enumerate(train_set):
    dataList.append(list(entry)) 

newList = []
for i, entry in enumerate(dataList):
    newEntry = []
    newEntry.append(torch.Tensor(noisy(entry[0]).float()))
    newEntry.append(randrange(10)
    newList.append(newEntry)
    del newEntry

newList = newList + dataList

with open('/save_location', 'wb') as f:
    pickle.dump(newList, f)

And this is the code for the CIFAR10Noise Dataset class itself:
class CIFAR10Noise(Dataset):

    def __init__(self):
        with open('/save_location', 'rb') as f:
            self.dataList = pickle.load(f)

    def __len__(self):
        return (len(self.dataList))

    def __getitem__(self, idx):
        return (tuple(self.dataList[idx]))

I do not think it is a problem with the dataset itself, as I have isolated the subset from CIFAR10Noise and created a custom Dataset the same way by copying over the exact tensors, and the network still produces different outputs. I can post that code as well if needed.