From b68d38c8a8393f76e77413b7a530ba34979e01f2 Mon Sep 17 00:00:00 2001
From: Abhishek Kadian <abhishekkadiyan@gmail.com>
Date: Fri, 14 Jun 2019 23:17:01 -0700
Subject: [PATCH] =?UTF-8?q?Modify=20partitioning=20logic=20to=20handle=20l?=
 =?UTF-8?q?eft-over=20scenes=20due=20to=20integer=20d=E2=80=A6=20(#89)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Modify partitioning logic to handle left-over scenes due to integer division
---
 habitat_baselines/train_ppo.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/habitat_baselines/train_ppo.py b/habitat_baselines/train_ppo.py
index f6586af21..97efa74a6 100644
--- a/habitat_baselines/train_ppo.py
+++ b/habitat_baselines/train_ppo.py
@@ -118,14 +118,18 @@ def construct_envs(args):
         )
         scene_split_size = int(np.floor(len(scenes) / args.num_processes))
 
+    scene_splits = [[] for _ in range(args.num_processes)]
+    for j, s in enumerate(scenes):
+        scene_splits[j % len(scene_splits)].append(s)
+
+    assert sum(map(len, scene_splits)) == len(scenes)
+
     for i in range(args.num_processes):
         config_env = cfg_env(config_paths=args.task_config, opts=args.opts)
         config_env.defrost()
 
         if len(scenes) > 0:
-            config_env.DATASET.CONTENT_SCENES = scenes[
-                i * scene_split_size : (i + 1) * scene_split_size
-            ]
+            config_env.DATASET.POINTNAVV1.CONTENT_SCENES = scene_splits[i]
 
         config_env.SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID = args.sim_gpu_id
 
-- 
GitLab