保存添加噪声的 MNIST 数据集

Save MNIST dataset with added noise

我想在添加噪声后保存新的 MNIST 数据集张量。

mnist_trainset = datasets.MNIST(root='./data', train=True, download=True, transform=transforms.ToTensor())

def add_noise(dataset):
  for data in dataset:
      img, _ = data[0], data[1]
      noisy_data = torch.tensor(random_noise(img, mode='gaussian', mean=0, var=0.05, clip=True))
      return noisy_data

train_gauss = add_noise(mnist_trainset)

上面的代码只保存了一张MNIST数据集的图像,如何一次保存所有张量?

您的 return 在 for 循环内,因此在第一次迭代结束时它已经 return 是 noisy_data

您应该将其从 for 循环中取出,然后您可以使用一个列表一次 return 整个数据集,如下所示:

mnist_trainset = datasets.MNIST(root='./data', train=True, download=True, transform=transforms.ToTensor())

def add_noise(dataset):
  noisy_data = []
  for data in dataset:
      img, _ = data[0], data[1]
      noisy_data += torch.tensor(random_noise(img, mode='gaussian', mean=0, var=0.05, clip=True))
  return noisy_data

train_gauss = add_noise(mnist_trainset)