From d33f85a2c5c5fc9a9ca99915d5da48e7ca79efa3 Mon Sep 17 00:00:00 2001 From: Shangtong Zhang Date: Fri, 11 May 2018 09:28:42 -0600 Subject: [PATCH] Refine API --- deep_rl/component/task.py | 2 +- examples.py | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/deep_rl/component/task.py b/deep_rl/component/task.py index c3d1803..7acdbc7 100644 --- a/deep_rl/component/task.py +++ b/deep_rl/component/task.py @@ -119,7 +119,7 @@ class Bullet(BaseTask): return BaseTask.step(self, np.clip(action, -1, 1)) class ProcessTask: - def __init__(self, task_fn, log_dir): + def __init__(self, task_fn, log_dir=None): self.pipe, worker_pipe = mp.Pipe() self.worker = ProcessWrapper(worker_pipe, task_fn, log_dir) self.worker.start() diff --git a/examples.py b/examples.py index 5c6fd16..d8ee99c 100644 --- a/examples.py +++ b/examples.py @@ -340,18 +340,20 @@ def ddpg_continuous(): config = Config() log_dir = get_default_log_dir(ddpg_continuous.__name__) # config.task_fn = lambda: Pendulum(log_dir=log_dir) - config.task_fn = lambda **kwargs: Bullet('AntBulletEnv-v0', **kwargs) + task_fn = lambda **kwargs: Bullet('AntBulletEnv-v0', **kwargs) - # start the test environment in a new process, it is a workaround to the issue + # each bullet environment should be started in a new process, it is a workaround + # to the issue of self-collision # https://github.com/bulletphysics/bullet3/issues/1643 - config.evaluation_env = ProcessTask(config.task_fn, log_dir=log_dir) + config.task_fn = lambda: ProcessTask(task_fn) + config.evaluation_env = ProcessTask(task_fn, log_dir=log_dir) config.actor_network_fn = lambda state_dim, action_dim: DeterministicActorNet( - action_dim, FCBody(state_dim, (300, 200))) + action_dim, FCBody(state_dim, (300, 200), gate=F.tanh)) config.critic_network_fn = lambda state_dim, action_dim: DeterministicCriticNet( - TwoLayerFCBodyWithAction(state_dim, action_dim, [400, 300])) + TwoLayerFCBodyWithAction(state_dim, action_dim, (400, 300), gate=F.tanh)) config.actor_optimizer_fn = lambda params: torch.optim.Adam(params, lr=1e-4) - config.critic_optimizer_fn = lambda params: torch.optim.Adam(params, lr=1e-3, weight_decay=0.01) + config.critic_optimizer_fn = lambda params: torch.optim.Adam(params, lr=1e-3) config.replay_fn = lambda: Replay(memory_size=1000000, batch_size=64) config.discount = 0.99 config.state_normalizer = RunningStatsNormalizer() @@ -415,7 +417,7 @@ if __name__ == '__main__': # option_ciritc_pixel_atari('BreakoutNoFrameskip-v4') # dqn_ram_atari('Breakout-ramNoFrameskip-v4') - # ddpg_continuous() + ddpg_continuous() # ppo_continuous() # action_conditional_video_prediction()