예제 #1
0
    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()
예제 #2
0
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
예제 #3
0
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
예제 #4
0
파일: run.py 프로젝트: TomVeniat/MNTDP
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()
예제 #5
0
    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]
예제 #6
0
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
예제 #7
0
    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()
예제 #8
0
    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()
예제 #9
0
    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)
예제 #10
0
    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)