def make_configs(self): config = Config() config.add_item(name='iter', val=30) config.add_item(name='hidden_sizes', val=[64, 32, 16]) config.add_random_eps(name='lr', base=10, low=-6, high=0, num_sample=10) config.add_random_continuous(name='values', low=-5, high=5, num_sample=5) config.add_random_discrete(name='select', list_val=[43223, 5434, 21314], num_sample=10, replace=True) configs = config.make_configs() return configs
def make_configs(self): config = Config() config.add_grid(name='use_ConvVAE', val=[True, False]) config.add_item(name='num_epochs', val=100) config.add_item(name='cuda', val=True) config.add_item(name='seed', val=1) config.add_item(name='batch_size', val=128) config.add_item(name='log_interval', val=100) configs = config.make_configs() return configs
def make_configs(self): config = Config() # General configurations config.add_item(name='cuda', val=True) config.add_item(name='cuda_id', val=1) # Random seeds # Generated by: np.random.randint(0, np.iinfo(np.int32).max, 10) config.add_grid(name='seed', val=[ 1284204222, 1079618558, 310837894, 1130644153, 2099771862, 1234806135, 92464293, 146053987, 1140885110, 988661500 ]) # Algorithm configuration config.add_item(name='algo:lr', val=1e-3) config.add_item(name='algo:gamma', val=0.99) config.add_item(name='algo:use_lr_scheduler', val=True) config.add_item(name='env:id', val='CartPole-v1') # Engine configuration config.add_item(name='train:iter', val=4000) config.add_item(name='train:N', val=1) config.add_item(name='train:T', val=500) config.add_item(name='eval:N', val=10) config.add_item(name='eval:T', val=500) # Agent configuration config.add_grid(name='agent:standardize', val=[True, False]) config.add_item(name='agent:max_grad_norm', val=0.5) # gradient clipping with max gradient norm config.add_item(name='agent:value_coef', val=0.5) # Coefficient for learning value function config.add_item(name='agent:entropy_coef', val=0.01) # Coefficient for maximize policy entropy # Logging configurations config.add_item(name='log:interval', val=100) config.add_item(name='log:dir', val='logs') configs = config.make_configs() return configs
def test_config(): config = Config() config.add_item(name='algo', val='RL') config.add_item(name='iter', val=30) config.add_item(name='hidden_sizes', val=[64, 32, 16]) config.add_grid(name='cuda_num', val=[1, 2, 3]) config.add_random_eps(name='lr', base=10, low=-6, high=0, num_sample=10) config.add_random_continuous(name='values', low=-5, high=5, num_sample=5) config.add_random_discrete(name='select', list_val=[43223, 5434, 21314], num_sample=10, replace=True) configs = config.make_configs() assert len(configs) == 1500 assert np.alltrue([config['ID'] == i for i, config in enumerate(configs)]) assert np.alltrue([config['algo'] == 'RL' for config in configs]) assert np.alltrue(['iter' in config for config in configs]) assert np.alltrue( [config['hidden_sizes'] == [64, 32, 16] for config in configs]) assert np.alltrue([config['cuda_num'] in [1, 2, 3] for config in configs]) assert np.alltrue( [config['lr'] > 0 and config['lr'] < 1 for config in configs]) assert np.alltrue([ config['values'] >= -5 and config['values'] < 5 for config in configs ]) assert np.alltrue( [config['select'] in [43223, 5434, 21314] for config in configs]) with pytest.raises(AssertionError): config.add_grid(name='wrong', val='yes')
def make_configs(self): config = Config() config.add_grid(name='cuda', val=[True]) config.add_item(name='seed', val=1) config.add_item(name='lr', val=1e-2) config.add_item(name='gamma', val=0.995) config.add_item(name='standardize_r', val=True) config.add_item(name='train_iter', val=1000) config.add_item(name='N', val=1) config.add_item(name='T', val=300) config.add_item(name='use_value', val=True) # True for actor-critic config.add_item(name='entropy_coef', val=0.0) config.add_item(name='value_coef', val=0.0) config.add_item(name='max_grad_norm', val=None) config.add_item(name='log_interval', val=100) configs = config.make_configs() return configs
def test_config(num_sample, keep_dict_order): with pytest.raises(AssertionError): Config([1, 2, 3]) config = Config( { 'log.dir': 'some path', 'beta': Condition(lambda x: 'small' if x['alpha'] < 5 else 'large'), 'network.type': 'MLP', 'network.hidden_size': [64, 64], 'network.lr': Grid([1e-3, 1e-4]), 'env.id': 'HalfCheetah-v2', 'iter': Grid([10, 20, 30]), 'alpha': Sample(lambda: np.random.uniform(3, 10)) }, num_sample=num_sample, keep_dict_order=keep_dict_order) list_config = config.make_configs() assert len(list_config) == 2 * 3 * num_sample for ID in range(2 * 3 * num_sample): assert list_config[ID]['ID'] == ID for x in list_config: assert len( x.keys()) == len(config.items.keys()) + 1 # added one more 'ID' for key in config.items.keys(): assert key in x assert x['log.dir'] == 'some path' if x['alpha'] < 5: assert x['beta'] == 'small' else: assert x['beta'] == 'large' assert x['network.type'] == 'MLP' assert x['network.hidden_size'] == [64, 64] assert x['network.lr'] in [1e-3, 1e-4] assert x['env.id'] == 'HalfCheetah-v2' assert x['iter'] in [10, 20, 30] assert x['alpha'] >= 3 and x['alpha'] < 10 if keep_dict_order: assert list(x.keys()) == ['ID'] + list(config.items.keys()) else: assert list(x.keys()) != ['ID'] + list(config.items.keys()) assert list(x.keys()) == [ 'ID', 'log.dir', 'beta', 'network.type', 'network.hidden_size', 'env.id', 'network.lr', 'iter', 'alpha' ] # test for non-random sampling config = Config( { 'log.dir': 'some path', 'network.type': 'MLP', 'network.hidden_size': [64, 64], 'network.lr': Grid([1e-3, 1e-4]), 'env.id': 'HalfCheetah-v2', 'iter': Grid([10, 20, 30]), 'alpha': 0.1 }, num_sample=num_sample, keep_dict_order=keep_dict_order) list_config = config.make_configs() assert len( list_config ) == 2 * 3 * 1 # no matter how many num_sample, without repetition for ID in range(2 * 3 * 1): assert list_config[ID]['ID'] == ID # test for all fixed config = Config( { 'log.dir': 'some path', 'network.type': 'MLP', 'network.hidden_size': [64, 64], 'network.lr': 1e-3, 'env.id': 'HalfCheetah-v2', 'iter': 20, 'alpha': 0.1 }, num_sample=num_sample, keep_dict_order=keep_dict_order) list_config = config.make_configs() assert len( list_config) == 1 # no matter how many num_sample, without repetition for ID in range(1): assert list_config[ID]['ID'] == ID