def finalize_initialization(self, run): # look at seed again, because it might have changed during the # configuration process if 'seed' in self.config: self.seed = self.config['seed'] self.rnd = create_rnd(self.seed) for cfunc in self._captured_functions: # Setup the captured function cfunc.logger = self.logger.getChild(cfunc.__name__) seed = get_seed(self.rnd) cfunc.rnd = create_rnd(seed) cfunc.run = run cfunc.config = get_by_dotted_path(self.get_fixture(), cfunc.prefix, default={}) # Make configuration read only if enabled in settings if SETTINGS.CONFIG.READ_ONLY_CONFIG: cfunc.config = make_read_only( cfunc.config, error_message='The configuration is read-only in a ' 'captured function!') if not run.force: self._warn_about_suspicious_changes()
def captured_function(wrapped, instance, args, kwargs): options = fallback_dict(wrapped.config, _config=wrapped.config, _log=wrapped.logger, _run=wrapped.run) if wrapped.uses_randomness: # only generate _seed and _rnd if needed options['_seed'] = get_seed(wrapped.rnd) options['_rnd'] = create_rnd(options['_seed']) bound = (instance is not None) args, kwargs = wrapped.signature.construct_arguments( args, kwargs, options, bound) if wrapped.logger is not None: wrapped.logger.debug("Started") start_time = time.time() # =================== run actual function ================================= with ConfigError.track(wrapped): result = wrapped(*args, **kwargs) # ========================================================================= if wrapped.logger is not None: stop_time = time.time() elapsed_time = timedelta(seconds=round(stop_time - start_time)) wrapped.logger.debug("Finished after %s.", elapsed_time) return result
def captured_function(wrapped, instance, args, kwargs): options = FallbackDict( wrapped.config, _config=wrapped.config, _log=wrapped.logger, _run=wrapped.run ) if wrapped.uses_randomness: # only generate _seed and _rnd if needed options['_seed'] = get_seed(wrapped.rnd) options['_rnd'] = create_rnd(options['_seed']) bound = (instance is not None) args, kwargs = wrapped.signature.construct_arguments(args, kwargs, options, bound) if wrapped.logger is not None: wrapped.logger.debug("Started") start_time = time.time() # =================== run actual function ================================= result = wrapped(*args, **kwargs) # ========================================================================= if wrapped.logger is not None: stop_time = time.time() elapsed_time = timedelta(seconds=round(stop_time - start_time)) wrapped.logger.debug("Finished after %s.", elapsed_time) return result
def init_and_run(experiment, modules, datasets, optimizers={}, _run=None, _rnd=None): # initializing datasets dsets = {} for dataset_name, dataset_config in sorted(datasets.items()): dsets[dataset_name] = init_dataset(**dataset_config, _rnd=_rnd) # initializing modules mods = {} for module_name, module_config in modules.items(): mods[module_name] = init_module(**module_config) # initializing optimizers for optimizer_name, optimizer_config in optimizers.items(): init_optimizer(mods['ll_models'], **optimizer_config) # initializing experiment and running it exp = init_experiment(sacred_run=_run, seed=get_seed(_rnd), **dsets, **mods, **experiment) return exp.run()
def build_tree(self): expension = FuzzedExpansion(self.x_dim - self.z_dim, self.fuzz_scale) self.tree.add_node(self._node_index[self.name], name=self.name) self.tree.add_node(self._node_index['expand'], name='expand') self.tree.add_edge(self._node_index[self.name], self._node_index['expand'], f=expension) for i in range(self.n_rotations): node_name = 'rotate_{}'.format(i) self.leaf_nodes.add(self._node_index[node_name]) rot = special_ortho_group.rvs(self.rot_dims, random_state=get_seed(self.rnd)) high_dim_rot = torch.eye(self.x_dim) # high_dim_rot[self.z_dim:, self.z_dim:] = 0 high_dim_rot[:self.rot_dims, :self.rot_dims] = torch.from_numpy( rot).float() # high_dim_rot[-self.rot_dims:, -self.rot_dims:] = torch.from_numpy(rot).float() rot = IsometricTransform(high_dim_rot) self.tree.add_node(self._node_index[node_name], name=node_name) self.tree.add_edge(self._node_index['expand'], self._node_index[node_name], f=rot) return self._node_index[self.name]
def init_dataset(_rnd, **kwargs): for k, v in kwargs.items(): if isinstance(v, dict): v = init_dataset(_rnd=_rnd, **v) kwargs[k] = v if '_name' in kwargs: return get_dataset_by_name(kwargs.pop('_name'))(seed=get_seed(_rnd), **kwargs) else: return kwargs
def finalize_initialization(self, run): # look at seed again, because it might have changed during the # configuration process if 'seed' in self.config: self.seed = self.config['seed'] self.rnd = create_rnd(self.seed) for cfunc in self._captured_functions: cfunc.logger = self.logger.getChild(cfunc.__name__) cfunc.config = get_by_dotted_path(self.get_fixture(), cfunc.prefix) seed = get_seed(self.rnd) cfunc.rnd = create_rnd(seed) cfunc.run = run self._warn_about_suspicious_changes()
def set_up_seed(self, rnd=None): if self.seed is not None: return self.seed = self.config.get('seed') or get_seed(rnd) self.rnd = create_rnd(self.seed) if self.generate_seed: self.config['seed'] = self.seed if 'seed' in self.config and 'seed' in self.config_mods.added: self.config_mods.modified.add('seed') self.config_mods.added -= {'seed'} # Hierarchically set the seed of proper subrunners for subrunner_path, subrunner in reversed(list( self.subrunners.items())): if is_prefix(self.path, subrunner_path): subrunner.set_up_seed(self.rnd)