【发布时间】:2019-09-11 14:57:29
【问题描述】:
我正在尝试使用训练 DCGAN 来为一些图像着色。这样做时,我将我的 GAN 设置在图像的灰度版本上。然后我想先用一批真实图像训练我的 GAN/判别器,然后再用一批假图像训练。每隔一段时间,我想比较图像的彩色、灰度和地面实况版本。因此,我需要以相同的方式拆分成批的真实/灰色图像。我使用pytorch。查看我包含的代码,这些应该提供相同的批次。然而,他们没有。
我试过不使用worker_init_fn。我也尝试了不同的随机函数调用并将它们传递给 worker_init_fn 无济于事。
dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size,
shuffle=True, num_workers=workers, worker_init_fn = random.seed(seed))
dataloader_gray = torch.utils.data.DataLoader(dataset_gray, batch_size=batch_size,
shuffle=True, num_workers=workers, worker_init_fn = random.seed(seed))
for i, (data, data_gray) in enumerate(zip(dataloader, dataloader_gray)):
doStuff()
【问题讨论】:
-
您在不同的数据加载器中加载彩色图像和灰色图像,如何确保它们正确配对?
-
Haran 也许我的问题表述得很糟糕。我的问题是如何批量正确配对图像。通过使用相同的 RNG/种子拆分批次,图像应该正确配对。但是,我做错了..
-
尝试改用
torch.manual_seed()。您还检查过加载器加载的第一张图片吗?颜色和灰色是否相互对应?在不同的运行中,加载器是否加载相同顺序的图像? -
我试过 worker_init_fn = torch.manual_seed。不会改变任何东西。结果显示在这里imgur.com/a/uCSDvmB。灰色应该只是图像的灰色版本,而不是完全不同。
-
我建议创建一个继承数据集的新类,该类按顺序加载两个图像。与使用种子值相比,这将是一个更强大的解决方案。