예제 #1
0
 def _thunk():
     if not os.path.exists(args.log_dir):
         os.mkdir(args.log_dir)
     log_path = args.log_dir + '/{}/'.format(args.env_name)
     logger.configure(log_path)
     env = make_atari(args.env_name)
     # set the seed for the environment
     env.seed(args.seed + rank)
     # set loggler
     env = bench.Monitor(
         env,
         logger.get_dir()
         and os.path.join(logger.get_dir(), str(rank)))
     # use the deepmind environment wrapper
     env = wrap_deepmind(env)
     return env
예제 #2
0
def create_single_env(args, rank=0):
    # setup the log files
    if rank == 0:
        if not os.path.exists(args.log_dir):
            os.mkdir(args.log_dir)
        log_path = args.log_dir + '/{}/'.format(args.env_name)
        logger.configure(log_path)
    # start to create environment
    if args.env_type == 'atari':
        # create the environment
        env = make_atari(args.env_name)
        # the monitor
        env = bench.Monitor(env, logger.get_dir())
        # use the deepmind environment wrapper
        env = wrap_deepmind(env, frame_stack=True)
    else:
        env = gym.make(args.env_name)
        # add log information
        env = bench.Monitor(env, logger.get_dir(), allow_early_resets=True)
    # set seeds to the environment to make sure the reproducebility
    env.seed(args.seed + rank)
    return env
예제 #3
0
def get_tensors(obs, env_type, filters=None):
    if env_type == 'atari':
        tensor = torch.tensor(np.transpose(obs, (2, 0, 1)),
                              dtype=torch.float32).unsqueeze(0)
    elif env_type == 'mujoco':
        tensor = torch.tensor(normalize(obs, filters.rs.mean, filters.rs.std),
                              dtype=torch.float32).unsqueeze(0)
    return tensor


if __name__ == '__main__':
    # get the arguments
    args = get_args()
    # create the environment
    if args.env_type == 'atari':
        env = make_atari(args.env_name)
        env = wrap_deepmind(env, frame_stack=True)
    elif args.env_type == 'mujoco':
        env = gym.make(args.env_name)
    # get the model path
    model_path = args.save_dir + args.env_name + '/model.pt'
    # create the network
    if args.env_type == 'atari':
        network = cnn_net(env.action_space.n)
        network.load_state_dict(
            torch.load(model_path, map_location=lambda storage, loc: storage))
        filters = None
    elif args.env_type == 'mujoco':
        network = mlp_net(env.observation_space.shape[0],
                          env.action_space.shape[0], args.dist)
        net_models, filters = torch.load(