From 73ea4187dec669f75f141ec11bdf0aef6ba4fe37 Mon Sep 17 00:00:00 2001 From: David Novotny Date: Tue, 6 Sep 2022 05:59:01 -0700 Subject: [PATCH] SimpleDataLoaderMapProvider sample batches without replacement if num_samples is not specified Summary: Samples batches without replacement if the number of samples is not specified. This makes sure that we always iterate over the whole dataset in each epoch. Reviewed By: bottler Differential Revision: D39270786 fbshipit-source-id: 0c983d1f5e0af711463abfb23939bc0d2b5172a0 --- .../implicitron/dataset/data_loader_map_provider.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pytorch3d/implicitron/dataset/data_loader_map_provider.py b/pytorch3d/implicitron/dataset/data_loader_map_provider.py index 754d71ac..8c0841cc 100644 --- a/pytorch3d/implicitron/dataset/data_loader_map_provider.py +++ b/pytorch3d/implicitron/dataset/data_loader_map_provider.py @@ -130,7 +130,14 @@ class SimpleDataLoaderMapProvider(DataLoaderMapProviderBase): num_samples = self.batch_size * num_batches else: num_samples = None - sampler = RandomSampler(dataset, replacement=True, num_samples=num_samples) + + # sample with replacement only if a custom number of samples is specified + sampler = RandomSampler( + dataset, + replacement=num_samples is not None, + num_samples=num_samples, + ) + batch_sampler = BatchSampler(sampler, self.batch_size, drop_last=True) return DataLoader( dataset,