Fix error 'integer division or modulo by zero' in data_utils.py
#27 #50 #222 #227 的一种可选择解决方案
This commit is contained in:
+14
-5
@@ -195,10 +195,19 @@ class DistributedBucketSampler(torch.utils.data.distributed.DistributedSampler):
|
|||||||
if idx_bucket != -1:
|
if idx_bucket != -1:
|
||||||
buckets[idx_bucket].append(i)
|
buckets[idx_bucket].append(i)
|
||||||
|
|
||||||
for i in range(len(buckets) - 1, 0, -1):
|
try:
|
||||||
if len(buckets[i]) == 0:
|
for i in range(len(buckets) - 1, 0, -1):
|
||||||
buckets.pop(i)
|
if len(buckets[i]) == 0:
|
||||||
self.boundaries.pop(i + 1)
|
buckets.pop(i)
|
||||||
|
self.boundaries.pop(i + 1)
|
||||||
|
assert all(len(bucket) > 0 for bucket in buckets)
|
||||||
|
# When one bucket is not traversed
|
||||||
|
except Exception as e:
|
||||||
|
print('Bucket warning ', e)
|
||||||
|
for i in range(len(buckets) - 1, -1, -1):
|
||||||
|
if len(buckets[i]) == 0:
|
||||||
|
buckets.pop(i)
|
||||||
|
self.boundaries.pop(i + 1)
|
||||||
|
|
||||||
num_samples_per_bucket = []
|
num_samples_per_bucket = []
|
||||||
for i in range(len(buckets)):
|
for i in range(len(buckets)):
|
||||||
@@ -264,4 +273,4 @@ class DistributedBucketSampler(torch.utils.data.distributed.DistributedSampler):
|
|||||||
return -1
|
return -1
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return self.num_samples // self.batch_size
|
return self.num_samples // self.batch_size
|
||||||
|
|||||||
Reference in New Issue
Block a user