Hyperparameter config file generator.
Project description
tuneconfig
Hyperparameter config file generator and experiment runner.
Quickstart
$ pip install -U tuneconfig
Usage
Config file generator
import pprint
import tuneconfig
# Define parameter formatting function
def format_fn(param):
fmt = {
"batch_size": "batch",
"horizon": "hr",
"learning_rate": "lr",
"optimizer": "opt",
"epochs": None,
"num_samples": None,
}
return fmt.get(param, param)
# Define a configuration template for grid search
config_iterator = tuneconfig.ConfigFactory({
"batch_size": tuneconfig.grid_search([32, 128]),
"horizon": 40,
"learning_rate": tuneconfig.grid_search([0.01, 0.1]),
"epochs": 1000,
"optimizer": tuneconfig.grid_search(["Adam", "RMSProp"]),
"num_samples": 10
},
format_fn=format_fn
)
# Iterate over config dicts
for idx, config in enumerate(config_iterator):
name = config_iterator._trial_id(config)
print(f"config {idx} ({name}):")
pprint.pprint(config)
print()
# Dump config dicts as JSON files
tmp = "/tmp/tuneconfig"
json_config_files = config_iterator.dump(tmp)
print(">> Saved config files:")
pprint.pprint(json_config_files)
config 0 (batch=32/hr=40/lr=0.01/opt=Adam):
{'batch_size': 32,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.01,
'num_samples': 10,
'optimizer': 'Adam'}
config 1 (batch=32/hr=40/lr=0.01/opt=RMSProp):
{'batch_size': 32,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.01,
'num_samples': 10,
'optimizer': 'RMSProp'}
config 2 (batch=32/hr=40/lr=0.1/opt=Adam):
{'batch_size': 32,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.1,
'num_samples': 10,
'optimizer': 'Adam'}
config 3 (batch=32/hr=40/lr=0.1/opt=RMSProp):
{'batch_size': 32,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.1,
'num_samples': 10,
'optimizer': 'RMSProp'}
config 4 (batch=128/hr=40/lr=0.01/opt=Adam):
{'batch_size': 128,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.01,
'num_samples': 10,
'optimizer': 'Adam'}
config 5 (batch=128/hr=40/lr=0.01/opt=RMSProp):
{'batch_size': 128,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.01,
'num_samples': 10,
'optimizer': 'RMSProp'}
config 6 (batch=128/hr=40/lr=0.1/opt=Adam):
{'batch_size': 128,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.1,
'num_samples': 10,
'optimizer': 'Adam'}
config 7 (batch=128/hr=40/lr=0.1/opt=RMSProp):
{'batch_size': 128,
'epochs': 1000,
'horizon': 40,
'learning_rate': 0.1,
'num_samples': 10,
'optimizer': 'RMSProp'}
>> Saved config files:
['/tmp/tuneconfig/batch=32/hr=40/lr=0.01/opt=Adam/config.json',
'/tmp/tuneconfig/batch=32/hr=40/lr=0.01/opt=RMSProp/config.json',
'/tmp/tuneconfig/batch=32/hr=40/lr=0.1/opt=Adam/config.json',
'/tmp/tuneconfig/batch=32/hr=40/lr=0.1/opt=RMSProp/config.json',
'/tmp/tuneconfig/batch=128/hr=40/lr=0.01/opt=Adam/config.json',
'/tmp/tuneconfig/batch=128/hr=40/lr=0.01/opt=RMSProp/config.json',
'/tmp/tuneconfig/batch=128/hr=40/lr=0.1/opt=Adam/config.json',
'/tmp/tuneconfig/batch=128/hr=40/lr=0.1/opt=RMSProp/config.json']
License
Copyright (c) 2020 Thiago Pereira Bueno All Rights Reserved.
tuneconfig is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
tuneconfig is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with tuneconfig. If not, see http://www.gnu.org/licenses/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tuneconfig-0.14.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7977401be53038b3952331e69fa47da6897b035daeed095853474d35455e04c |
|
MD5 | bfd51b8d9bd13c3d3365b5f72ab927a3 |
|
BLAKE2b-256 | c819296c2b6c83c8c48bf115d18446894703745e10b5cff163975c7664c93136 |