def make_gym_env(env_args): env_kargs = deepcopy(env_args) env = gym_envs(env_kargs) return env
def gym_run(default_args, share_args, options, max_step, max_episode, save_frequency, name, seed): from gym_loop import Loop from gym_wrapper import gym_envs model, algorithm_config, policy_mode = get_model_info(options['--algorithm']) render_episode = int(options['--render-episode']) if options['--render-episode'] != 'None' else default_args['render_episode'] try: env = gym_envs(gym_env_name=options['--gym-env'], n=int(options['--gym-agents']), seed=int(options['--gym-env-seed']), render_mode=default_args['render_mode']) except Exception as e: print(e) if options['--config-file'] != 'None': algorithm_config = update_config(algorithm_config, options['--config-file']) _base_dir = os.path.join(share_args['base_dir'], options['--gym-env'], options['--algorithm']) base_dir = os.path.join(_base_dir, name) show_config(algorithm_config) model_params = { 's_dim': env.s_dim, 'visual_sources': env.visual_sources, 'visual_resolution': env.visual_resolution, 'a_dim_or_list': env.a_dim_or_list, 'is_continuous': env.is_continuous, 'max_episode': max_episode, 'base_dir': base_dir, 'logger2file': share_args['logger2file'], 'seed': seed, } gym_model = model( **model_params, **algorithm_config ) gym_model.init_or_restore(os.path.join(_base_dir, name if options['--load'] == 'None' else options['--load'])) begin_episode = gym_model.get_init_episode() params = { 'env': env, 'gym_model': gym_model, 'begin_episode': begin_episode, 'save_frequency': save_frequency, 'max_step': max_step, 'max_episode': max_episode, 'eval_while_train': default_args['eval_while_train'], # whether to eval while training. 'max_eval_episode': default_args['max_eval_episode'], 'render': default_args['render'], 'render_episode': render_episode, 'policy_mode': policy_mode } if 'batch_size' in algorithm_config.keys() and options['--fill-in']: steps = algorithm_config['batch_size'] else: steps = default_args['random_steps'] if options['--inference']: Loop.inference(env, gym_model) else: sth.save_config(os.path.join(base_dir, 'config'), algorithm_config) try: Loop.no_op(env, gym_model, steps, choose=options['--noop-choose']) Loop.train(**params) except Exception as e: print(e) finally: gym_model.close() env.close() sys.exit()
def gym_run(default_args, share_args, options, max_step, max_episode, save_frequency, name): from gym_loop import Loop from gym.spaces import Box, Discrete, Tuple from gym_wrapper import gym_envs try: tf_version, (model, policy_mode, _) = get_model_info(options['--algorithm']) algorithm_config = sth.load_config( f'./Algorithms/{tf_version}/config.yaml')[options['--algorithm']] except KeyError: raise NotImplementedError available_type = [Box, Discrete] render_episode = int(options['--render-episode']) if options[ '--render-episode'] != 'None' else default_args['render_episode'] try: env = gym_envs(options['--gym-env'], int(options['--gym-agents'])) assert type(env.observation_space) in available_type and type( env.action_space ) in available_type, 'action_space and observation_space must be one of available_type' except Exception as e: print(e) if options['--config-file'] != 'None': algorithm_config = update_config(algorithm_config, options['--config-file']) _base_dir = os.path.join(share_args['base_dir'], options['--gym-env'], options['--algorithm']) base_dir = os.path.join(_base_dir, name) show_config(algorithm_config) if type(env.observation_space) == Box: s_dim = env.observation_space.shape[0] if len( env.observation_space.shape) == 1 else 0 else: s_dim = int(env.observation_space.n) if len(env.observation_space.shape) == 3: visual_sources = 1 visual_resolution = list(env.observation_space.shape) else: visual_sources = 0 visual_resolution = [] if type(env.action_space) == Box: assert len( env.action_space.shape ) == 1, 'if action space is continuous, the shape length of action must equal to 1' a_dim_or_list = env.action_space.shape action_type = 'continuous' elif type(env.action_space) == Tuple: assert all( [type(i) == Discrete for i in env.action_space] ) == True, 'if action space is Tuple, each item in it must have type Discrete' a_dim_or_list = [i.n for i in env.action_space] action_type = 'discrete' else: a_dim_or_list = [env.action_space.n] action_type = 'discrete' gym_model = model(s_dim=s_dim, visual_sources=visual_sources, visual_resolution=visual_resolution, a_dim_or_list=a_dim_or_list, action_type=action_type, max_episode=max_episode, base_dir=base_dir, logger2file=share_args['logger2file'], out_graph=share_args['out_graph'], **algorithm_config) gym_model.init_or_restore( os.path.join( _base_dir, name if options['--load'] == 'None' else options['--load'])) begin_episode = gym_model.get_init_episode() params = { 'env': env, 'gym_model': gym_model, 'action_type': action_type, 'begin_episode': begin_episode, 'save_frequency': save_frequency, 'max_step': max_step, 'max_episode': max_episode, 'eval_while_train': default_args['eval_while_train'], # whether to eval while training. 'max_eval_episode': default_args['max_eval_episode'], 'render': default_args['render'], 'render_episode': render_episode, 'policy_mode': policy_mode } if 'batch_size' in algorithm_config.keys() and options['--fill-in']: steps = algorithm_config['batch_size'] else: steps = default_args['random_steps'] if options['--inference']: Loop.inference(env, gym_model, action_type) else: sth.save_config(os.path.join(base_dir, 'config'), algorithm_config) try: Loop.no_op(env, gym_model, action_type, steps, choose=options['--noop-choose']) Loop.train(**params) except Exception as e: print(e) finally: try: gym_model.close() except Exception as e: print(e) finally: env.close() sys.exit()
def gym_run(options, max_step, save_frequency, name): from gym_loop import Loop from gym.spaces import Box, Discrete, Tuple from gym_wrapper import gym_envs available_type = [Box, Discrete] render = train_config['gym_render'] render_episode = int(options['--render-episode']) if options['--render-episode'] != 'None' else train_config['gym_render_episode'] try: env = gym_envs(options['--gym-env'], int(options['--gym-agents'])) print('obs: ', env.observation_space) print('a: ', env.action_space) assert env.observation_space in available_type and env.action_space in available_type, 'action_space and observation_space must be one of available_type' except Exception as e: print(e) try: algorithm_config, model, policy_mode, train_mode = algos[options['--algorithm']] except KeyError: raise Exception("Don't have this algorithm.") if options['--config-file'] != 'None': algorithm_config = update_config(algorithm_config, options['--config-file']) _base_dir = os.path.join(train_config['base_dir'], options['--gym-env'], options['--algorithm']) base_dir = os.path.join(_base_dir, name) show_config(algorithm_config) if type(env.observation_space) == Box: if len(env.observation_space.shape) == 1: s_dim = env.observation_space.shape[0] else: s_dim = 0 else: s_dim = env.observation_space.n if len(env.observation_space.shape) == 3: visual_sources = 1 visual_resolution = list(env.observation_space.shape) else: visual_sources = 0 visual_resolution = [] if type(env.action_space) == Box: assert len(env.action_space.shape) == 1, 'if action space is continuous, the shape length of action must equal to 1' a_dim_or_list = env.action_space.shape action_type = 'continuous' elif type(env.action_space) == Tuple: assert all([type(i) == Discrete for i in env.action_space]) == True, 'if action space is Tuple, each item in it must have type Discrete' a_dim_or_list = [i.n for i in env.action_space] action_type = 'discrete' else: a_dim_or_list = [env.action_space.n] action_type = 'discrete' gym_model = model( s_dim=s_dim, visual_sources=visual_sources, visual_resolution=visual_resolution, a_dim_or_list=a_dim_or_list, action_type=action_type, base_dir=base_dir, logger2file=train_config['logger2file'], out_graph=train_config['out_graph'], **algorithm_config ) gym_model.init_or_restore(os.path.join(_base_dir, name if options['--load'] == 'None' else options['--load'])) begin_episode = gym_model.get_init_episode() max_episode = gym_model.get_max_episode() params = { 'env': env, 'gym_model': gym_model, 'action_type': action_type, 'begin_episode': begin_episode, 'save_frequency': save_frequency, 'max_step': max_step, 'max_episode': max_episode, 'render': render, 'render_episode': render_episode, 'train_mode': train_mode } if options['--inference']: Loop.inference(env, gym_model, action_type) else: sth.save_config(os.path.join(base_dir, 'config'), algorithm_config) try: Loop.no_op(env, gym_model, action_type, 30) Loop.train(**params) except Exception as e: print(e) finally: try: gym_model.close() except Exception as e: print(e) finally: env.close() sys.exit()