def test_iter_grid(self): grid = dict(a=[], b=[]) self.assertCountEqual(list(utils_impl.iter_grid(grid)), []) grid = dict(a=[1]) self.assertCountEqual(list(utils_impl.iter_grid(grid)), [dict(a=1)]) grid = dict(a=[1, 2]) self.assertCountEqual(list(utils_impl.iter_grid(grid)), [dict(a=1), dict(a=2)]) grid = dict(a=[1, 2], b='b', c=[3.0, 4.0]) self.assertCountEqual(list(utils_impl.iter_grid(grid)), [ dict(a=1, b='b', c=3.0), dict(a=1, b='b', c=4.0), dict(a=2, b='b', c=3.0), dict(a=2, b='b', c=4.0) ])
def main(argv): if len(argv) > 1: raise app.UsageError('Too many command-line arguments.') target = '//tensorflow_federated/python/research/gans/experiments/emnist:train' executable = 'bazel run {} --'.format(target) grid_iter = utils_impl.iter_grid({ 'filtering': ['by_user'], 'invert_imagery_probability': ['0p0', '0p5'], 'accuracy_threshold': ['lt0p882', 'gt0p939'], 'num_client_disc_train_steps': [6], 'num_server_gen_train_steps': [6], 'num_clients_per_round': [10], 'num_rounds': [1000], 'use_dp': [True], 'dp_l2_norm_clip': [0.1], 'dp_noise_multiplier': [0.01], 'num_rounds_per_eval': [10], 'num_rounds_per_save_images': [10] }) utils_impl.launch_experiment(executable, grid_iter, root_output_dir='/tmp/exp', short_names={ 'filtering': 'filt', 'invert_imagery_probability': 'inv_lik', 'accuracy_threshold': 'acc', 'num_client_disc_train_steps': 'n_disc', 'num_server_gen_train_steps': 'n_gen', 'dp_l2_norm_clip': 'dp_clip', 'dp_noise_multiplier': 'dp_noise', 'num_rounds_per_eval': 'n_rds_eval', 'num_rounds_per_save_images': 'n_rds_images' }, max_workers=1) print('Experiments launched.')